LoginSignup
1
1

More than 5 years have passed since last update.

【ティラノスクリプト】選択済みの選択肢にマーク【glink】

Posted at

選択肢ごとにいちいち[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をアレンジすればマークの追加以外にも色を変えたりいろいろできるはず
難点はラベルの通過を選択肢を選択したかの判断基準にしているので、選択肢は選択したけど次のラベルまで到達してない場合にマークがつかないこと まあその辺はダミーのラベル通過させるとかすればよろし

何かの参考になれば幸いです

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1