ゴースト切替えメッセージを変化させる(新)¶
概要¶
複数ゴーストへの切り換え反応を管理する際の可読性を向上させた実装方法。従来の OnGhostChanging と OnGhostChanged を専用ヘルパー関数に置き換え、ゴーストごとに個別の関数を定義できるようにします。
ゴースト名に含まれる特殊文字(!, %, ", #, $, &, (, ), *, +, ,, -, /, :, ;, <, =, >, ?, @, [, ], `, {, |, }, ~ など)はすべてアンダースコア _ に置換されます。
例: +Emily+ → 関数名 OnGhostChanged__Emily_
コード例¶
ヘルパー関数(辞書の末尾に追加)¶
TranslateSystemChar
{
_text = TOSTR(_argv[0])
_text = RE_REPLACE(_text,"[ !%(CHR(0x22))%(CHR(0x25))#$&()*+,\-/:;<=>?@\[\]`{|}~]","_")
_text
}
ExecuteChangeCallTalk
{
_ghostname = TranslateSystemChar(reference0)
_funcname = "%(_argv[0])_%(_ghostname)"
if ISFUNC(_funcname) {
_script = EVAL(_funcname)
if STRLEN(_script) != 0 {
_script
return
}
}
_funcname = "%(_argv[0])Other"
if ISFUNC(_funcname) {
_script = EVAL(_funcname)
if STRLEN(_script) != 0 {
_script
return
}
}
if _argc >= 2 {
_script = EVAL(_argv[1])
if STRLEN(_script) != 0 {
REPLACE(_script,"\\-","")
return
}
}
}
OnGhostChanging { ExecuteChangeCallTalk("OnGhostChanging","OnClose") }
OnGhostChanged { ExecuteChangeCallTalk("OnGhostChanged","OnBoot") }
OnGhostCalling { ExecuteChangeCallTalk("OnGhostCalling") }
OnGhostCalled { ExecuteChangeCallTalk("OnGhostCalled","OnBoot") }
OnGhostCallComplete { ExecuteChangeCallTalk("OnGhostCallComplete") }
OnOtherGhostClosed { ExecuteChangeCallTalk("OnOtherGhostClosed") }
ゴースト専用関数の定義(命名規則: [イベント名]_[Sakura名])¶
OnGhostChanged_ゴーストA
{
if "お料理" _in_ reference1 {
"(文章1)"
}
elseif "薬" _in_ reference1 {
"(文章2)"
}
else {
"(文章3)"
}
}
説明¶
対応イベント一覧¶
| 関数名 | 機能 |
|---|---|
OnGhostChanging |
他ゴーストへ切り替え時 |
OnGhostChanged |
他ゴーストから切り替えられた時 |
OnGhostCalling |
ゴースト呼び出し開始時 |
OnGhostCallComplete |
ゴースト呼び出し完了時 |
OnGhostCalled |
他ゴーストから呼び出された時 |
OnOtherGhostClosed |
他ゴースト終了時 |
ExecuteChangeCallTalk の動作¶
reference0(ゴースト名)の特殊文字をアンダースコアに変換[イベント名]_[ゴースト名]の関数があれば実行- なければ
[イベント名]Otherの関数があれば実行 - それもなければフォールバック(OnClose / OnBoot 等)を実行
関連項目¶
- Tips/ゴースト切替えメッセージを変化させる
- ISFUNC
- EVAL