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 ) {
          登用持参金 = パラメタ.入力値;
        }
      }
    }