void On_プレイヤコマンド完了直前《メイン画面》
void カスタム::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 ) {
登用持参金 = パラメタ.入力値;
}
}
}