最終更新日 2024-09-25
void On_プレイヤコマンド完了直前《メイン画面》
void カスタム::On_プレイヤコマンド完了直前《メイン画面》() { }
タイミング
- メイン画面上において、プレイヤによって実行されたコマンドが完了した際に実行される。
「完了」とはコマンドの「成功」「失敗」「キャンセル」「ゲーム脱却」など全てを総称して、「完了」したと見なす。
一般的用途
- 特定のコマンドに機能を付与する際に、何らかの値を操作する必要がある時、利用する。
- このコマンドは、該当コマンドの開始ハンドラに相当する、「On_プレイヤコマンド発生直前《メイン画面》」と対で使ってこそ威力を発揮する。
例①
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) { デバッグ出力 << "コマンド発生" << endl; } void カスタム::On_プレイヤコマンド完了直前《メイン画面》() { デバッグ出力 << "コマンド完了" << endl; }
例②
/* * 登用に失敗した場合には持参金の分は返してもらう */ int 実行中コマンド = 0; int 登用持参金 = 0; BOOL 登用失敗状態 = FALSE; void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) { /* 登用コマンドが発生したら、特別にフラグを立てる */ if ( サブコマンド番号 == メイン画面::サブコマンド名::人事::登用 ) { 実行中コマンド = メイン画面::サブコマンド名::人事::登用; 登用持参金 = 0; // コマンド実行の度に持参金リセット デバッグ出力 << "登用コマンド発生" << endl; } } void カスタム::On_プレイヤコマンド完了直前《メイン画面》() { /* 完了したのが登用コマンドであれば、 */ if ( 実行中コマンド == メイン画面::サブコマンド名::人事::登用) { // 登用に失敗してたなら、登用持参金が返ってくる。 if ( 登用失敗状態 ) { // 現在操作中の軍団番号【配列用】 int iGundanID = pターン情報.現在のターン【軍団番号】-1; // 金を増やすのでオーバーフローしないように。 int 金 = p軍団情報[iGundanID].金; 金 += 登用持参金; // 登用持参金が返ってくる。 金 = min( 60000, 金 ); // オーバーフロー対策 p軍団情報[iGundanID].金 = 金; 登用失敗状態 = FALSE; } デバッグ出力 << "登用コマンド脱却" << endl; } 実行中コマンド = 0; // 何のコマンドが完了しても、0にしてしまう。 } string カスタム::On_噴出メッセージ直前(string 武将名, string 元メッセージ, メッセージ関連情報型 メッセージ関連情報) { if ( 実行中コマンド == メイン画面::サブコマンド名::人事::登用 ) { // 登用失敗を汎用的に判定するAPIはTSModから提供されていない。よってこの吹き出しメッセージでその状態を検知する。 if ( Is_正規表現マッチ( 元メッセージ, "頭を下げても\x0Aだめ|" "お気持ちだけ\x0A受け取らせて|" "人の心を金品で|" "金品に込められし|" "民百姓のすすり泣く|" "何故に.+?に\x0A仕官せねば|" "当家に仕官する気は\x0Aないと|" "礼をわきまえぬ者の\x0A言葉など|" "見え透いた追従は\x0Aかえって気分を|" "追従では.+\x0A.+は本心から|" "嘘・偽りは心の|" "まさかこの.+に\x0A仕官しろというのでは|" "では宝の持ち腐れ…|" "望まれる方は迷惑千万|" "下手な追従されても") ) { 登用失敗状態 = TRUE; // コマンド完了のメソッドにて、判定に利用する。 } } // 変更しない場合"" return ""; } void カスタム::On_数値入力ダイアログ決定時(string メッセージ, 数値入力ダイアログパラメタ型 パラメタ ) { // 登用コマンドの場合、入力した持参金を保持しておく。 if ( 実行中コマンド == メイン画面::サブコマンド名::人事::登用 ) { // 入力を取り消していないなら if ( パラメタ.入力値 != 0xFFFF ) { 登用持参金 = パラメタ.入力値; } } }