選択肢ごとにいちいち[if]~[endif]と書くのが面倒だったからCSSとjsでどうにかするバージョン
[button]タグの場合は知らん
CSS記述
まずはtyrano.css
にこんな感じで記述
別のCSSファイルに記述して[loadcss]
で読み込んでもいいです
tyrano.css
/* 選択済みの選択肢にマーク */
.glink_button.checked::after{
content: url("../data/image/button/glink_check.png");
position: absolute;
top: -10px;
left: 90%;
}
checked
っていうのが選択済みの選択肢に与えるクラスです。
マクロ記述
次に選択肢ボタン用のマクロを記述
この中で選択済みの選択肢(=通過済みのラベル)の場合は事前にCSSで記述しておいた選択済み選択肢用のクラスを追加する
macro.ks
[macro name="glink_ad"]
[iscript]
tf.label = "trail_" + mp.storage.replace(".ks", "").replace(/\u002f/g, "").replace(/:/g, "").replace(/\./g, "")
tf.label = tf.label + "_" + mp.target.replace("*", "")
tf.name = null
if(TYRANO.kag.variable.sf.record[tf.label] === undefined){
tf.name = mp.name
}else{
tf.name = mp.name + ",checked"
}
[endscript]
[glink * color="bk-image" name="&tf.name" clickse="button_click.ogg" enterse="button_hover.ogg"]
[endmacro]
基本的には通常の[glink]
と指定できる属性等同じですが、マクロ内で呼び出し元のシナリオファイル名を取得する方法がわからなかったのでstorage
指定は必須です。
ロード時の処理
これだけだと、選択肢部分でセーブ、その後ロードしたときに表示される選択肢が選択済みのときにマークが反映されないのでmake.ks
にこんな感じに記述
make.ks
[iscript]
var el = $(".glink_button")
for(var i = 0; i < el.length; i++){
var glink = JSON.parse($(el[i]).attr("data-event-pm"))
var label = "trail_" + glink.storage.replace(".ks", "").replace(/\u002f/g, "").replace(/:/g, "").replace(/\./g, "")
label = label + "_" + glink.target.replace("*", "")
name = null
if(TYRANO.kag.variable.sf.record[label] === undefined){
}else{
$(el[i]).addClass("checked")
}
}
[endscript]
cssをアレンジすればマークの追加以外にも色を変えたりいろいろできるはず
難点はラベルの通過を選択肢を選択したかの判断基準にしているので、選択肢は選択したけど次のラベルまで到達してない場合にマークがつかないこと まあその辺はダミーのラベル通過させるとかすればよろし
何かの参考になれば幸いです