YAYAで選択肢の未読/既読を確認する処理作ったメモ

1年近くほとんど作業してなくてしんでましたが!
メニュー周りの動作今見てもよかったな~と思ったので備忘録がてら書き残してみる
もっと良い処理あったらおしえてくだしい


トークの選択肢や、メニューからのワードコミュを読んだか読んでないかを、選択肢の前のアイコンでわかるようにした処理。
自分で辞書書くときは、アイコンを置き換えで短縮して書いてるので、知らないさくらスクリプトもどき混ざってますが全部アイコン用です。
(該当記述の隣にアイコン画像載せてるので参考にしてください)

まず処理

//既読・未読管理関数
Read_I{
//「_argv[0]」に入れた数値で処理を変える
case _argv[0]
{
when ‘1’ //二択
{
//イベントで開放された選択肢とか用
//開放時点(0)で未読。読んだら(1)既読。
if _argv[1] == 0;”\_b[icon\arrow2_!.png,inline]”
else;”\![a1]”
}

when ‘2’ //まとめて未読確認

{

//メニューの中でワードコミュみたいなのあるとき用

//全てのコミュの変数を足して、1以上あれば未読。0であれば既読。
//「nonreaded_talk」みたいな変数作って、
//フェーズ進行とかでコミュ増えるたびに増えたコミュの分代入して管理してる(読んだら減らす)
if _argv[1] > 0;”\_b[icon\arrow2_!.png,inline]”
else;”\![a1]”
}
when ‘3’ //三択
{
//・一度も回想をみていない(完全な未読)
//・一部選択肢だけ見た(一部未読)
//・すべての選択肢を見た(完全な既読)
//の状態があるトーク用。2つ目以降の変数も確認する必要がある場合
//選択肢の数で処理に違いが発生するので、「_argv[1]」には選択肢の数を入れる
//必要に応じて増やす必要がある
case _argv[1]
{
when ‘1’
{
//二択とほぼ同じ トーク内に選択肢がない場合
//「event_hoge」みたいな変数作って、
//コミュ未開放(0)、開放・未読(1)、既読(2)
//になるように変数足してる
if _argv[2] == 1 ;”\_b[icon\arrow2_!.png,inline]”
else;”\![a1]”
}
when ‘2’
{
//本題 トーク内の選択肢が2つある場合
//すべて未読「1」だと未読アイコンを返す
if _argv[2] == 1 && _argv[3] == 1;”\_b[icon\arrow2_!.png,inline]”
//すべて既読「0」だと既読アイコンを返す
elseif _argv[2] == 0 && _argv[3] == 0;”\![a1]”
//片方未読の場合は一部未読アイコンを返す
else;”\_b[icon\arrow1_!.png,inline]”
}
when ‘3’
{
//選択肢3つの場合
//4つ以上も同じように、「_argv[hoge]」の部分増やして判断してる
//すべて未読「1」だと未読アイコンを返す
if _argv[2] == 1 && _argv[3] == 1 && _argv[4] == 1;”\_b[icon\arrow2_!.png,inline]”
//すべて既読「0」だと既読アイコンを返す
elseif _argv[2] == 0 && _argv[3] == 0 && _argv[4] == 0;”\![a1]”
//その他(混ざってる)場合は一部未読アイコンを返す
else;”\_b[icon\arrow1_!.png,inline]”
}
others;”\![error]”
}
}
//一応ミスがあったときのために、どれにも該当しなかったらエラーアイコンになるように
others;”\![error]”
}
}

と実際使うときの記述

%(Read_I([1~3],[未読管理してる変数]))\q[ほげほげ,hogehoge]

みたいに書くと、「%(Read_I(~))」の部分がアイコンに置き換えられて、状況に応じて変わってくれる。

ほげほげ

みたいになってくれる


例↓

menu
{
“なにか用?\n/
%(Read_I(1,nonreaded_event))\q[イベントトーク,event_talk]\n/
\n/
%(Read_I(2,nonreaded_profile))\q[ワードコミュ,profile]\e”
}

profile
{
“%(Read_I(3,r_profile_1))\q[コミュ1,profile_1]\n/
%(Read_I(3,r_profile_2))\q[コミュ2,profile_2]\n/
%(Read_I(3,r_profile_3))\q[コミュ3,profile_3]\n”
}

みたいに書くと

なにか用?
イベントトーク

ワードコミュ

コミュ1
コミュ2
コミュ3

というふうになってくれる