最終更新日 2024-09-25

戦争 - 参戦と立場

戦争中において、どのような大名が参戦したのか、どのような軍団が参戦したのか、
あるいはどのような武将が出陣中なのかを取得するAPI軍団です。

原則的に、「戦争中」のイベントハンドラ内での利用が中心で、次いで会話メッセージ中での判定用にて使うことになるでしょう。

現在行われている戦争に参加した大名勢力はどこなのか? についての情報を得る

番号リスト型 Get_参戦の大名番号リスト【配列用】()
対象イベントハンドラの制限はない今回提示する以下の関数群のサンプル軍は、
たまたま全て「On_残りターン変更《戦争画面》」イベントハンドラ内での記述となっているが、
別段そのような使用制限事項は存在しない。
戦争中に実行されるいかなるイベントハンドラ内においても(たとえば吹き出し直前イベントハンドラ等)、実行可能である。
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
  番号リスト型 dlist = Get_参戦の大名番号リスト【配列用】();

  for( int iDaimyoID : dlist ) {
    デバッグ出力 << "参戦大名番号【配列用】:" << iDaimyoID << endl;
    デバッグ出力 << "大名:" << Get_名字( p大名情報[iDaimyoID].大名【武将番号】-1 ) << endl;
  }
}

現在行われている戦争に参戦した軍団勢力はどこなのか? についての情報を得る

番号リスト型 Get_参戦の軍団番号リスト【配列用】()
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
  番号リスト型 glist = Get_参戦の軍団番号リスト【配列用】();

  for ( int iGundanID : glist ) {
    デバッグ出力 << "参戦軍団番号【配列用】:" << iGundanID << endl;
    int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】-1;
    if ( 0 <= iBushouID && iBushouID < 最大数::武将情報::配列数 ) {
      デバッグ出力 << "軍団長:" << Get_名字(iBushouID)+Get_名前(iBushouID) << endl;
    }
  }
}

とある軍団の「戦争への参戦立場」についての情報を得るものとなる

int Get_軍団の参戦立場(int 軍団番号【配列用】)
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
  番号リスト型 glist = Get_参戦の軍団番号リスト【配列用】();

  for ( int iGundanID : glist ) {

    int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】-1;

    if ( 0 <= iBushouID && iBushouID < 最大数::武将情報::配列数 ) {
      デバッグ出力 << "軍団長:" << Get_名字(iBushouID)+Get_名前(iBushouID) << endl;
    }

    // 軍団としての参戦立場を得る
    int iTachiba = Get_軍団の参戦立場(iGundanID);

    if ( iTachiba == 参戦立場::不明 ) {
      デバッグ出力 << "立場:不明" << endl;
    }
    else if ( iTachiba == 参戦立場::攻撃軍 ) {
      デバッグ出力 << "立場:攻撃軍" << endl;
    }
    else if ( iTachiba == 参戦立場::守備軍 ) {
      デバッグ出力 << "立場:守備軍" << endl;
    }
    else if ( iTachiba == 参戦立場::攻撃の援軍 ) {
      デバッグ出力 << "立場:攻撃の援軍" << endl;
    }
    else if ( iTachiba == 参戦立場::守備の援軍 ) {
      デバッグ出力 << "立場:守備の援軍" << endl;
    }
    else if ( iTachiba == 参戦立場::中立軍 ) {
      デバッグ出力 << "立場:中立軍" << endl;
    }
    デバッグ出力 << "------------------------" << endl;
  }
}

現在の戦争中において、とある軍団の戦場における指揮者は誰なのか? の情報を得るものとなる。

代表者とは、軍団長や大名とは限らない。
大名や軍団長が戦場に居ない場合などは、戦場にて最も相応しい者が代表者として天翔記システムにより選ばれている。

int Get_参戦軍団の指揮者(int 軍団番号【配列用】)
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {

  if ( 残りターン数 <= 29 ) {
    番号リスト型 glist = Get_参戦の軍団番号リスト【配列用】();

    for each ( int iGundanID in glist ) {
      デバッグ出力 << "参戦軍団番号【配列用】:" << iGundanID << endl;

      int iBushouID = Get_参戦軍団の指揮者(iGundanID);

      if ( 0 <= iBushouID && iBushouID < 最大数::武将情報::配列数 ) {
        デバッグ出力 << "指揮者:" << Get_名字(iBushouID)+Get_名前(iBushouID) << endl;
      }
    }
  }
}

現在出陣しいている武将一覧を取得する

番号リスト型 Get_出陣中の武将番号リスト【配列用】()

現在の「戦域全域」を対象として出陣している武将のリストを得る。
戦域全域とは、画面上に表示されていないような攻城戦などに出陣中の武将も含まれる。

番号リスト型 Get_出陣中の武将番号リスト【配列用】《表示中マップ》()

現現在表示中の戦闘マップに出陣している武将番号配列用のリストを得る。
現在表示されているマップのみが対象となる。(野戦マップもしくは特定の攻城戦マップ)

void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {

  if ( 残りターン <= 29 ) {
    // 野戦 or 攻城戦 という戦域全体で、現在出陣中の武将一覧
    番号リスト型 blist = Get_出陣中の武将番号リスト【配列用】();

    for( int iBushouID : blist ) {

      デバッグ出力 << "武将姓名:" << Get_名字(iBushouID)+Get_名前(iBushouID) << endl;
    }
  }
}
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
	if (Is_野戦中()) {
		// 現在表示中の野戦なら、表示中の野戦フィールドで出陣中の武将一覧
		番号リスト型 blist = Get_出陣中の武将番号リスト【配列用】《表示中マップ》();
		for (int iBushouID : blist) {
			デバッグ出力 << Get_名字(iBushouID) + Get_名前(iBushouID) << endl;
		}
	}
}

void カスタム::On_ターン変更《攻城中画面》(int ターン数) {
	if (Is_攻城戦中()) {
		// 現在表示中の攻城戦で表示中の城マップでの出陣中の武将一覧
		番号リスト型 blist = Get_出陣中の武将番号リスト【配列用】《表示中マップ》();
		for (int iBushouID : blist) {
			デバッグ出力 << Get_名字(iBushouID) + Get_名前(iBushouID) << endl;
		}
	}
}

とある武将の「戦争への参戦立場」についての情報を得るものとなる

int Get_武将の参戦立場(int 武将番号【配列用】)

void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {

  if ( 残りターン <= 29 ) {
    番号リスト型 blist = Get_出陣中の武将番号リスト【配列用】();

    for each ( int iBushouID in blist ) {

      デバッグ出力 << "武将姓名:" << Get_名字(iBushouID)+Get_名前(iBushouID) << endl;

      // 武将としての参戦立場を得る
      int iTachiba = Get_武将の参戦立場(iBushouID);

      if ( iTachiba == 参戦立場::不明 ) {
        デバッグ出力 << "立場:不明" << endl;
      }
      else if ( iTachiba == 参戦立場::攻撃軍 ) {
        デバッグ出力 << "立場:攻撃軍" << endl;
      }
      else if ( iTachiba == 参戦立場::守備軍 ) {
        デバッグ出力 << "立場:守備軍" << endl;
      }
      else if ( iTachiba == 参戦立場::攻撃の援軍 ) {
        デバッグ出力 << "立場:攻撃の援軍" << endl;
      }
      else if ( iTachiba == 参戦立場::守備の援軍 ) {
        デバッグ出力 << "立場:守備の援軍" << endl;
      }
      else if ( iTachiba == 参戦立場::中立軍 ) {
        デバッグ出力 << "立場:中立軍" << endl;
      }
      デバッグ出力 << "------------------------" << endl;

    }
  }
}

より詳細を知るには...

「戦争 - 参戦と立場」に関する主な所は以上となります。 詳しくは「戦場情報型.h」や「戦場情報列挙.h」などを参照してください。