最終更新日 2024-06-19

User.version.SDK ~戦争の参加者~

戦争の参加者の概念

戦争の参加者が誰なのか?
といったことを取り扱いたいことは多いものです。

ところが戦争の参加者といっても、様々な視点があります。

といった様々な分類があります。

注意点

戦争の具体的な参加勢力は、戦争が発生した直後に決まるわけではありません。
戦争が発生した後、「My_戦争参加勢力決定直後」イベントハンドラが呼び出される直前に、
具体的な戦争参加勢力が決定します。

使用例①


My_戦争参加勢力決定直後」以降であれば、
戦争中どこでも大名・軍団・武将に関する参加情報を引き出すことが出来ます。

大名の参加情報を得る
    public static string My_噴出メッセージ直前(string 元メッセージ, 噴出メッセージパラメタ型 パラメタ)
    {
        if (戦争.Is_野戦中 || 戦争.Is_籠城戦中)
        {
            int iBushouID = パラメタ.第1人称_武将番号;
            if (武将.配列.Exists(iBushouID))
            {
                var dlist = 大名.戦争.参戦大名番号リスト;
                foreach (int iDaimyoID in dlist)
                {
                    int iDaiBushouID = 大名.配列[iDaimyoID].大名_武将番号;
                    if (武将.配列.Exists(iDaiBushouID))
                    {
                        デバッグ出力(武将.配列[iDaiBushouID].名字 + "家参戦");
                    }
                }

            }
        }

        return "";
    }

使用例②

戦争を行っているのは、事実上「軍団単位」であるため、
参戦情報については、軍団情報が一番充実しているといえます。

軍団の参加情報を得る
public static string My_噴出メッセージ直前(string 元メッセージ, 噴出メッセージパラメタ型 パラメタ)
{
    if (戦争.Is_野戦中 || 戦争.Is_籠城戦中)
    {
        int iBushouID = パラメタ.第1人称_武将番号;
        if (武将.配列.Exists(iBushouID))
        {
            var glist = 軍団.戦争.参戦軍団番号リスト;
            foreach (int iGundanID in glist)
            {
                var g = 軍団.配列[iGundanID];
                int iGdcBushouID = g.軍団長_武将番号;
                if (武将.配列.Exists(iGdcBushouID))
                {
                    デバッグ出力(武将.配列[iGdcBushouID].姓名 + "の軍団参戦");

                    int iSdsBushouID = g.戦争.総大将_武将番号;
                    if (武将.配列.Exists(iSdsBushouID))
                    {
                        デバッグ出力("今回の戦の" + 武将.配列[iSdsBushouID].姓名 + "軍団の指揮官は" + 武将.配列[iSdsBushouID].姓名 + "です");
                    }

                    int stand = g.戦争.参戦立場;
                    if (stand == 列挙.軍団.戦争.参戦立場.攻撃軍)
                    {
                        デバッグ出力("攻撃軍です");
                    }
                    else if (stand == 列挙.軍団.戦争.参戦立場.守備軍)
                    {
                        デバッグ出力("守備軍です");
                    }
                    else if (stand == 列挙.軍団.戦争.参戦立場.攻撃の援軍)
                    {
                        デバッグ出力("攻撃の援軍です");
                    }
                    else if (stand == 列挙.軍団.戦争.参戦立場.守備の援軍)
                    {
                        デバッグ出力("守備の援軍です");
                    }
                    else if (stand == 列挙.軍団.戦争.参戦立場.中立軍)
                    {
                        デバッグ出力("中立軍です");
                    }
                    else
                    {
                        デバッグ出力("不明な軍です");
                    }
                }
            }

        }

    }

    return "";
}

使用例③

武将という視点での、出陣者や参戦立場を取得したい
そういうシーンも多いものです。
武将番号から軍団番号を求めて、参戦立場を得る方法もありますが、
武将個々にも参戦立場のプロパティが直接提供されています。

軍団の参加情報を得る
public static string My_噴出メッセージ直前(string 元メッセージ, 噴出メッセージパラメタ型 パラメタ)
{
    if (戦争.Is_野戦中 || 戦争.Is_籠城戦中)
    {

        var alllist = 武将.戦争.出陣中_武将番号リスト;
        デバッグ出力("戦場全体で出陣中の武将一覧:");
        foreach (int iBushouID in alllist)
        {
            デバッグ出力(武将.配列[iBushouID].姓名 + " 参戦立場:" + 武将.配列[iBushouID].戦争.参戦立場);
        }
        デバッグ出力("");

        var curlist = 武将.戦争.出陣中_表示戦場_武将番号リスト;
        デバッグ出力("現在表示中の戦場限定で、出陣中の武将一覧:");
        foreach (int iBushouID in curlist)
        {
            デバッグ出力(武将.配列[iBushouID].姓名 + " 参戦立場:" + 武将.配列[iBushouID].戦争.参戦立場);
        }
        デバッグ出力("");

    }

    return "";
}
  • その他

    「戦争の参加者」について、主な解説は以上となります。
    詳しくはHD.version.SDKソース内の「大名.h」「大名列挙.h」や「軍団.h」「軍団列挙.h」や「武将.h」「武将列挙.h」の
    戦争関連部分を参照してみてください。