【コピペで作る】伺か ダブルクリックでメニューを開けるようにする【yaya】

ukagaka

前回

【コピペで作る】伺か・ゴーストの差分画像を福笑い形式で変更する。【YAYA】

今回すること

今後の機能等を実装するためにメニュー画面を追加します。
ukagaka_addMenu.png

ダブルクリックイベントを拾えるようにする。

以前撫で判定を追加した時のように新しいファイルを追加します。
【コピペで作る】撫で反応を実装する【伺か・yaya】 — 異風堂々

dic_DoubleClick.ukaを作成し、yaya.txtに登録して読み込まれるようにします。

dic_DoubleClick.ukaにコピペする。

OnMouseDoubleClick { 
    EVAL("MouseDoubleClick_%(reference[3])%(reference[4])") 
} 


MouseDoubleClick_0Head { 
    "ダブルクリック:頭" 
} 


//メインキャラの当たり判定が無い部分 
MouseDoubleClick_0 { 
    "ダブルクリック:None" 
} 

ここまででダブルクリックの反応はおしまいです。
SSPを起動してきちんと反応するか確認してみてください。

簡易的なメニューを実装する

設定していない部位をクリックしたときにメニューを表示できるようにしてみようと思います。
下記を追記、変更してください。

//メインキャラの当たり判定が無い部分 
MouseDoubleClick_0 { 
    //"ダブルクリック:None" 
    DoubleClickMenu 
} 


DoubleClickMenu { 
    "\_q/ 
    \n[half]/ 
     【機能】\n/ 
    \![*]\q[テストメニューA,TestMenuA]\n/ 
    \![*]\q[テストメニューB,TestMenuB]\n/ 
    \![*]\q[テストメニューC,TestMenuC]\n/ 
    \![*]\q[特にない,]\n/ 
    \n[half]\e" 
} 


TestMenuA { 
    "テストメニューA" 
} 
TestMenuB { 
    "テストメニューB" 
} 
TestMenuC { 
    "テストメニューC" 
} 

メニューの表示まで、これでできるようになりました。

このままでは項目が選択できない。

項目が選択されたときの処理を追加する必要があります。
新しくdic_Function.ukaを作り、yaya.txtに登録しましょう。

UKADOC Project SHIORI Eventリスト
こちらのOnChoiceSelectExイベントを追加します。
SSP専用のイベントですのでご注意ください。

//ssp only 
OnChoiceSelectEx { 

    //後々運用しやすいように引数をグローバル化しておく。 
    Global_count = ARRAYSIZE("%(reference)")-2 
    Global_arg1 = reference[2] 
    Global_arg2 = reference[3] 
    Global_arg3 = reference[4] 
    Global_arg4 = reference[5] 
    Global_arg5 = reference[6] 

    _func = reference[1] 
    if ISFUNC( _func ) { 
        EVAL( _func ) 
    } 
} 

ここまでで実際に選択できるようになるはずです。

セーブデータをきれいに管理する。

yayaではローカル変数とグローバル変数があります。
アンダーバーから始まる変数はローカルで、他の関数からは利用できず、一度関数から抜けると消えます。
グローバル変数は他の関数からも利用できて、ゴーストを終了する際にはファイルに保存され、次回起動する際に読み込まれます。

ExampleFunction { 
    _Local_arg = "Local Example" 
    Global_arg = "Global Example" 
} 

OnChoiceSelectExでは外部に引数を渡すために受け取った引数をグローバル変数にしましたが、
一時的な橋渡しとしての運用ですので、特に保存するつもりはありません。
セーブデータをより簡素にするために余計な情報を保存しないようにしましょう。

dic_Functionにこのように追記します。

UnloadChoiceSelectEx { 
    ERASEVAR( 'Global_count' ) 
    ERASEVAR( 'Global_arg1' ) 
    ERASEVAR( 'Global_arg2' ) 
    ERASEVAR( 'Global_arg3' ) 
    ERASEVAR( 'Global_arg4' ) 
    ERASEVAR( 'Global_arg5' ) 
} 

次にdic_Boot.ukaOnGhostUnload関数に以下を追記します。

OnGhostUnload { 
    ERASEVAR( 'GHOSTPATH' ) 
    UnloadMouseStroke 

    //今回追記する 
    //dic_Function.uka 
    UnloadChoiceSelectEx 
} 

短いですが今回はここまでです。
次回はメニューに実際に機能を追加して実行します。

次回予定

ゴーストに天気予報を教えてもらう
【コピペで作る】伺か ゴーストに天気予報を教えてもらう。【YAYA】