最終更新日 2024-09-25

void On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号)

void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
}

引数の補足

タイミング

一般的用途

例①

void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
  デバッグ出力 << "コマンド発生" << endl;

}

void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {
  デバッグ出力 << "コマンド完了" << endl;
}

例②

int ターゲットコマンド発生 = 0;
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {

  /* 特定のコマンドが発生したのかどうかの判定 */

  if ( メインコマンド番号 == メイン画面::メインコマンド名::本城 ) {
    デバッグ出力 << "本城コマンド発生" << endl;

    ターゲットコマンド発生 = メインコマンド番号;
  }

  else if ( サブコマンド番号 == メイン画面::サブコマンド名::軍事::訓練 ) {
    デバッグ出力 << "軍事->訓練コマンド発生" << endl;

    ターゲットコマンド発生 = サブコマンド番号;
  }
}

void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {

  if ( ターゲットコマンド発生 ) {
    ターゲットコマンド発生 = 0;
    デバッグ出力 << "コマンド脱却" << endl;
  }
}

例③

BOOL iFlagOf金1000 = FALSE;
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
  /*
   何かコマンドを実行する度に、今ターン中のプレイヤ大名の軍団の金が1000増える。
   */
  デバッグ出力 << "コマンド発生" << endl;
  iFlagOf金1000 = TRUE;

}

void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {

  デバッグ出力 << "コマンド完了" << endl;

  if ( iFlagOf金1000 ) {
    iFlagOf金1000 = FALSE; // フラグは下す

    // 現在ターンがまわっている軍団。iFlagOf金1000が立ってるということは、事実上プレイヤがコマンド入力で操作している軍団。
    int iGundanID = pターン情報.現在のターン【軍団番号】-1;

    // 一応のチェック
    if ( 0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {

      // オーバーフロー防止のため、一度int型で計算する。
      int 金 = p軍団情報[iGundanID].金;
      金 += 1000;
      金 = min( 60000, 金 ); // 60000以上なら60000とする。
      p軍団情報[iGundanID].金 = 金; // 65535までしかないWORD型に収まっていると保障されたので、値を代入。

    }
  }
}