Misya SOScript (ScreenObjectsScript)

ScreenObjectsScript

概要

SOScript、ScreenObjectsScriptはその名前の示す通り
ScreenObjectsと一緒に動くScript言語です。

単純な文法が最大の特徴です。

経緯

単独では静的な表現しか出来ないScreenObjectを補う為に、SOScriptは生まれました。
基本文法はv0.1の時代から変わらずに、しかし文法の拡張は続けられています。

特徴

スクリプトエンジンの実装負担を減らす為に
とことん簡略な文法を採用しています。

文法

改行禁止の、セミコロン区切りです。
複数命令を「;」で区切って連続して記述します。

命令は常にTargetObjectと共に実行されます。
TargetObjectは、一般的にthisやselfと表現されるものです。

命令

接頭詞によって命令表現を行います。
prefixnameexplain
$ Set / 値書き換え 属性の値を書き換えます。
$target.property newvalue
(「target.」が自身の場合は省略。)
% Get / 値呼び出し 属性の値を呼び出します。
%target.property
(「target.」が自身の場合は省略。)
単体で実行しても意味がありません。
& Exec / メソッド呼び出し 指定された属性を命令文の集合として実行します。
[ ShiaMessage (ShiaCall) ShiaMessageを発行します。
ShiaControllerに渡され、適当な値が返却されます。
@SystemCall システムコールを発行します。
SOScriptEngineで処理され、適当な値が返却されます。
{ 条件分岐 条件分岐フラグを設定します。
妄想中。
} 条件実行 条件分岐フラグにより、続く命令の実行を決めます。
妄想中。

命令の例

exampleexplain
$fraction 0.5;自身の透過度を0.5にします。
$target.visible YES;targetを可視状態にします。
$fraction %target.fraction自身の透過度をtargetと同値にします。
&self.onrun自身のonrun属性をSOScriptとして実行します
@runshiacall [shia.music.op.play;shia.musicへShiaMessageを発行し、
opというBGMを再生します。

予約語

wordexplain
NO偽を示します
false偽を示します
真偽判定は、偽であるかどうかで行います。
そのため、YES/trueは予約語として定義されません。

システムコール

SysCallArgsexplain
example
runShiaCallShiaMessageShiaMessageを発行します
@runshiacall [shia.obj.method key:val;
runSceAsReplaceSceFilePathシナリオを実行させます。
@runsceasreplace scenario.shia;
runSceAsChildSceFilePath
@runsceaschild scenario.shia;
quitSO-全てのScreenを破棄し、OrderQueを空にします。
@quitso;
exec-シナリオを実行させます。
@exec;
quitApp-実行環境を終了します。
@quitapp;
runSOSOfileSOfileからScreenを作成し、スタックに積む
runSOAsChildSOfileSOfileからScreenを作成し、スタックに積む
runSOAsReplaceSOfileSOfileからScreenを生成し、現在のものと置き換える
closeSOカレントのスクリーンを破棄する
beep-警告音を鳴らす
@beep
focustargettargetにフォーカスを移す
@forcus btn1
forgroupgroup, ordergroupに含まれる全てのオブジェクトを対象にorderを実行する。
@forgroup first $visible yes
logstring標準出力にログを吐きます。
@log This is log message.
OrderQueue
SOScriptのorderをQueue構造で保持します。
loadOrderOrderFilePathorderを読み込み、OrderQueueの末尾に追加します。
addOrderorderOrderQueueの末尾にorderを追加します。
removeOrder-OrderQueueの先頭からorderを削除します。
clearOrder-OrderQueueをクリアします。
logOrderOrderQueue内のorderを出力します。
ArteMisya Expansion
ArteMisyaではShiaSceの代わりにSOScriptを羅列したものをシナリオとして利用しました。
シナリオとして読み込まれたSOScriptはキューに保持され、execコマンドで実行されます。

noticeMsgArteMessageNoArteMisya Exp.
loadsceOrderFilePathloadsceと同等。廃止予定。
clearsce-clearsceと同等。廃止予定。
logscelogsceと同等。廃止予定。