好きなマップに移動できるツールを作ってみた
今日はマップ間のつながりを制御する処理を
VC++側からLuaに移行する作業をしていていた。
マップ切り替えテストもそうだが、
この後のマップ毎の初期化処理のテストなどのことも考えると、
デバッグ用に好きなマップにすぐ移動できる
マップジャンプ機能が欲しいなぁ、と思った。
現状でもステージ名一覧とマップ名一覧のファイルがあるから、
マップクリエーターと同じコンボボックスで
「ステージ番号」と、「マップ名」は指定できる。
問題は「マップへの進入番号」だけである。
初音ミク冒険記における「マップへの進入番号」の説明をしよう。
上図は、ボカロタウンのお買い物エリア。
丸付き数字が「マップへの進入番号」である。
①:ボカロタウン入口からお買い物エリアに来た
②:居住エリアからお買い物エリアに来た
③:ルネッタ・キーアからお買い物エリアに出た
④:食わねーわよからお買い物エリアに出た
といった感じで要するに別のマップに移動した時の
ミクの初期位置を決めるのに必要な番号ってこと。
今は、マップごとに何個の進入番号があるかは
実はVC++側のソースにしか存在しないので
指定したマップに進入番号として有効なのは何番までかは
ツールを開発するC#では分からない・・・
この辺りは、将来的に線マップエディタで設定できるようにしたいところだ。
が、現状、存在しないものは仕方が無いので
ツール側でマップを選択しても進入番号のチェックはしないことにする。
とは言っても、番号なので数値チェックはしたいので
数値入力できるスピンボタン付きのテキストエリアを準備する。
これは上限値と下限値を指定できるので
下限値には1を、上限値には暫定で8をセットすることにした。
なんで8にしたかというと
居住エリアには6個の入口があり、
お買い物エリアとセントラル地区へ続く道があるためだ。
(今のところ、セントラル地区へ移動できるようにするかは不明だが・・・)
ということで、C#で作ったのがこんな画面。
下の方にキャンプメニューやシステムメニューとか
明らかに作りかけのボタンがあるけど、
実は、全部まともに動かない(笑)
将来的には、キャンプメニューやシステムメニューのボタンから
直接メニューに移動できるようにしたいとは思っているんだけどね。
今回使うのは上のグループボックスだけ。
初音ミク冒険記本体を起動した状態で
移動先ステージ、移動先マップ、マップへの進入番号を入力して
「マップ移動」ボタンを押すと
初音ミク冒険記本体が、指定したマップに即時に切り替わり
すぐに初音ミク冒険記を操作できる状態になる。
自分で作っておいて何だが、これは便利だ。
内部的には、「マップ移動」ボタンが押された段階で
1.VC++で作った初音ミク冒険記本体にステージ番号とマップ番号を送信
2.初音ミク冒険記本体は、C#のツールにマップへの進入番号送信依頼を送信
3.ツールから初音ミク冒険記本体へマップへの進入番号送信
4.初音ミク冒険記本体が進入番号を受信したらマップ初期化モードに移行
という流れになっている。
後でシーケンス図を作っておかなきゃな。
例によって情報送信はWindowsメッセージを使っているので
処理して欲しいことを示すメッセージIDと
2つの数値パラメータしか送れないため
3つパラメータを送信する場合、2回に分けて送信するのだが
本体から次を送れ通知がこないとツールと本体で同期が取れないのだ。
さて、そろそろWindowsメッセージで使うメッセージIDとかを整理しないと
バリエーションが増えてきたので辛くなってきた。
近いうちにtracのwikiにでもまとめておこう。
| 固定リンク
コメント
このブログの新着コメントをRSSリーダに登録する為のxml