メニューの作成
=前置き=
RPG(のバトルシステムとか成長システム)の方向に進もうかと思うので、まずはその準備としてメニューをある程度簡単に作れるようにした。
時間がないので解説は省略。これから使っていくうちに変更する可能性も高いし。
=コード(の一部)=
一応、参考のためにコードの一部も。
とりあえず、以下のようなObjectを渡すことでメニューを生成できるようにしてみた。
public var g_Menu_Battle:Object = {Type:GAWA_Command,//UI : コマンド list:[//コマンドに表示するリスト {ID:COMMAND_ATTACK,//「攻撃」 next:{Type:GAWA_Target,//UI : ターゲット選択 param:"trg",//選んだものは「trg」という名前で参照可能 list:GetTargetMenu({//ターゲットに表示するリスト(の生成関数) next:AttackStart("trg")//選んだtrgを元に攻撃実行 }) } }, {ID:COMMAND_ITEM,//「アイテム」 next:{Type:GAWA_ItemList,//UI : アイテム選択 param:"item_index",//選んだものは「item_index」という名前で参照可能 list:GetItemMenu({//アイテムに表示するリスト(の生成関数) next:ItemStart("item_index")//選んだitem_indexを元にアイテム使用 }) } } ] }
ガワ(UI)の部分はTypeで指定して、それぞれで表示を行ってもらう。
「敵」みたいにゲーム中に要素が変化する部分にも対応できるように、「GetTargetMenu」のような関数を指定できるようにした。(「配列やObjectを返す関数」を返す関数をセットしている)
C++だとMapをこんな風に設定できないので、マクロにする必要があるのかなー。関数の生成のところは「オブジェクトの生成+"()operator"のオーバライド」でなんとかなりそうだけど。