最終更新日 2024-06-19

User.version.SDK ~戦略.ターン~

戦略.ターンの概念

戦略.ターンとは、戦略画面の大名ターンもしくは軍団ターンのことです。

「現在ターンが回っている大名」「ターンが回っている軍団」
を簡単に得ることが出来るよう、「戦略.ターン」オブジェクトが提供されています。

使い処

専用のイベントハンドラとして、「My_戦略_軍団ターン変更時
というイベントハンドラがあります。

よって、「戦略.ターン」オブジェクトを利用するのは、
「My_戦略_軍団ターン変更時」以外のイベントハンドラで、 ターン情報を得たい時、というのがほとんどとなります。

注意点

「大名ターン」と「大名ターン」の「間」など、「どの軍団のターンでもない」といった状態は頻繁に発生します。
そういった場合、ターン軍団番号やターン大名番号には「0xFFFF」が入った状態となります。

なお、戦争自体も「戦争を仕掛けた軍団」の行動の一部分ですから、
戦争をしかけた軍団の「戦略.ターン」に含まれます。注意してください。

使用例①

ターン大名番号とターン軍団番号
    public static string My_噴出メッセージ直前(string 元メッセージ, 噴出メッセージパラメタ型 パラメタ)
    {
        int iGundanID = 戦略.ターン.ターン軍団番号;
        if (軍団.配列.Exists(iGundanID))
        {

            var g = 軍団.配列[iGundanID];

            int iBushouID = g.軍団長_武将番号;

            if (武将.配列.Exists(iBushouID))
            {
                var b = 武将.配列[iBushouID];
                デバッグ出力("軍団長" + b.姓名 + "ターン内のメッセージです。");
            }
        }

        int iDaimyoID = 戦略.ターン.ターン大名番号;
        if (大名.配列.Exists(iDaimyoID))
        {

            var d = 大名.配列[iDaimyoID];

            int iBushouID = d.大名_武将番号;

            if (武将.配列.Exists(iBushouID))
            {
                var b = 武将.配列[iBushouID];
                デバッグ出力("大名:" + b.姓名 + "ターン内のメッセージです。");
            }
        }

        return "";
    }

}

使用例②

最も多い使用例の1つは、やはり、現在プレイヤのターンなのか?
といった判定でしょう。

ターンが回ってきているのはプレイヤ操作の軍団か?
    public static string My_噴出メッセージ直前(string 元メッセージ, 噴出メッセージパラメタ型 パラメタ)
    {
        int iGundanID = 戦略.ターン.ターン軍団番号;
        if (軍団.配列.Exists(iGundanID))
        {

            var g = 軍団.配列[iGundanID];

            if (g.Is_プレイヤ担当軍団)
            {
                デバッグ出力("プレイヤが直接操作している軍団のターン");
            }
            if (g.Is_プレイヤ麾下軍団)
            {
                デバッグ出力("プレイヤが支配下に置いている軍団(直接担当している第1軍団含む)のターン");
            }
        }

        int iDaimyoID = 戦略.ターン.ターン大名番号;
        if (大名.配列.Exists(iDaimyoID))
        {

            var d = 大名.配列[iDaimyoID];

            if (d.Is_プレイヤ担当大名)
            {
                デバッグ出力("プレイヤの大名のターン");
            }
        }

        return "";
    }

その他

戦略.ターンに関する主な所は以上となります。
詳しくはHD.version.SDKソース内の「戦略_ターン.h」を参照してください。