最終更新日 2024-06-19

On_戦争_残りターン変更時

On_戦争_残りターン変更時

戦争画面の「残りターンが変更」するタイミングで呼び出されるイベントハンドラとなります。

プログラム上のターン数値上が変更された直後、
画面上のターン数値が変更される前、
天気が更新される前、
という非常に早いタイミングとなります。

PICTURE

注意点

部隊のユニット情報などはこのタイミングですでに最新情報です。
しかし、画面上に表示されている残りターン数や、
SDKで提供している「天気関連の情報」に関しては、
このイベントハンドラが呼ばれた後に更新されます。
よってこのイベントハンドラ内では、「1つ前のターンの天気の情報」となりますので
注意してください。

使い処

このイベントハンドラは、戦争のコントロールの中核的なイベントハンドラとなります。
又、このイベントハンドラが呼びされるタイミングは、「ダイアログ」などを表示しても
安全なタイミングであることが保証されています。

使用例①

まずは、このイベントハンドラがどのような時に呼ばれるのか、
確認しましょう。

On_戦争_残りターン変更時がどのようなタイミングで呼ばれるのかを知る
void 天翔記クラス::On_戦争_残りターン変更時(int 残りターン数) {
  デバッグ出力 << "残りターン" << 残りターン数 << endl;

  String^ 現在の画面に居るメンバ = "";

  auto list = 武将->戦争->出陣中_表示戦場_武将番号リスト;

  int i = 0;
  for each (int iBushouID in list) {
    現在の画面に居るメンバ += 武将->配列[iBushouID]->姓名 + "/";
    i++;
    if (i % 4 == 0) {
      現在の画面に居るメンバ += "\xA";
    }
  }

  ダイアログ->Show_情報_中央(現在の画面に居るメンバ);
}

使用例②

ターンが変わる度に、出陣中の武将(今表示されている画面外に居る武将も含む)に
何か処理を施すといったことはよくあることです。

出陣中の武将(画面外含む)の兵数を毎ターン最大回復
void 天翔記クラス::On_戦争_残りターン変更時(int 残りターン数) {
  デバッグ出力 << "残りターン" << 残りターン数 << endl;

  auto list = 武将->戦争->出陣中_武将番号リスト;

  for each (int iBushouID in list) {
    武将->配列[iBushouID]->兵士 = 武将->配列[iBushouID]->最大兵士;
  }
}

その他

「On_戦争_残りターン変更時」イベントハンドラについて、主な解説は以上となります。