最終更新日 2024-09-25

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

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

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

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

注意点

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

使い処

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

使用例①

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

My_戦争_残りターン変更時がどのようなタイミングで呼ばれるのかを知る
    public static void My_戦争_残りターン変更時(int 残りターン数)
    {
        デバッグ出力("残りターン" + 残りターン数);

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

        var list = 武将.戦争.出陣中_表示戦場_武将番号リスト;

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

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

使用例②

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

出陣中の武将(画面外含む)の兵数を毎ターン最大回復
    public static void My_戦争_残りターン変更時(int 残りターン数)
    {
        デバッグ出力("残りターン" + 残りターン数);

        var list = 武将.戦争.出陣中_武将番号リスト;

        foreach (int iBushouID in list)
        {
            武将.配列[iBushouID].兵士 = 武将.配列[iBushouID].最大兵士;
        }
    }

その他

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