雇用

修正・追加

 雇用する予定のキャラクターをウインドウ上へドロップする処理を作っていきます。

 前回やっておかなければなりませんでしたが、情報表示中のキャラIDは他の処理でも利用するので通常変数へ代入するように変更します。
 またドラッグ中のキャラIDも同じ理由で変数を用意をしておきます。

 ゲーム開始時はドラッグしていない状態なので、-1で初期化しておきます。
 ドラッグ処理はこの値を参照して条件分岐することになります。

 キャラ情報非表示の条件にドラッグ中を追加しました。

拾った時の処理

 誰がどこにいるか、この2点が雇用処理の際に必要な情報です。
 キャラIDは情報表示時に獲得しているので、あとはどこにいるかを取得すればドラッグ前準備は完了です。

 ドラッグドロップ処理のメインは上のように条件分岐します。
 キャラクタIDの状態はすでに取得済みなのでクリックの確認をすればドラッグ開始です。

 ついでにドラッグIDにキャラIDを代入しておきました。

 位置データベースのID0~27番から該当するキャラIDを検索してヒットした場合にその値を位置ID変数へ代入して終了しています。
 ここだけに特化するならキャラに位置情報を持たせる方が早いのですが、その場合ドロップ時に空き場所を探す処理が面倒になるのでこうしています。

ドロップ処理

 ドラッグ中の画像移動は省略します。
 まずはドロップ時にウインドウに落とされた場合の処理を作っていきます。


 ここでテストプレイをすると上の図のように好きな位置に配置できるようになります。

 現在ウインドウIDと位置IDを上の図のように設定しています。


 処理にするとこうなります。
 ウインドウが存在しない場合や空き位置がない場合はデータの変更なくもとの位置へ戻ります。

空き位置検索

 この処理は他の場所でも利用するので別コモンイベントで処理します。
 ウインドウIDは-100,000~-100,004を利用しているので100,000足して絶対値を取ります。
 空き位置はウインドウID0が12個、以降4個ずつ初期位置に加算して検索初期値とします。

 確認用にデバッグを入れておきました。

 あとは初期位置から必要数を検索し、空きがあれば戻り値へ代入して終了です。

データベース処理


 ドロップ前の位置から傭兵を外して、ドロップ後の位置に傭兵を入れます。
 次に位置IDに該当するピクチャ座標を計算して移動座標として設定します。
 座標計算処理は省略します。

その他

 気になる点を微修正して終了です。
 簡単な処理を組み合わせて、チェック&分岐するだけなので難しくはないと思います。

 次回は解雇処理&攻略ボタン処理を施して完成まであと一歩です。