最終更新日 2024-09-25

戦争 - 退却と戦死

武将ユニットが戦死したかどうかの判定

p武将戸籍情報[iBushouID].戦死

なお、戦死については、武将 - 死亡 の項目とも関わるので、
「戦死」→「死亡」とフラグがバトンで渡っていくことをしっておくこと。

番号リスト型 戦争出陣武将リストの控え;
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
	if (残りターン数 == 30) {
		// Get_出陣中の武将番号リスト【配列用】() の関数は「退却武将」や「戦死武将」は含まれないため、一番最初のターンの開始で、全員分のリストを控えておく
		戦争出陣武将リストの控え = Get_出陣中の武将番号リスト【配列用】();
	}

	for (int iBushouID : 戦争出陣武将リストの控え) {
		if (p武将戸籍情報[iBushouID].戦死) {
			デバッグ出力 << Get_名字(iBushouID) + Get_名前(iBushouID) << "は、この戦争中に戦死しました" << endl;
		}
	}
}

void カスタム::On_戦争終了() {
	// 戦争終了時にリストをクリア
	戦争出陣武将リストの控え.clear();
}

戦場での戦死に関連する項目として、

などがあります。

武将ユニットを戦場で戦死させる

武将 - 死亡 にて説明されています。

武将ユニットが退却したかどうかの判定

p武将戸籍情報[iBushouID].退却

出陣していない武将が、城を奪われた際に退却することは、この項目とは無関係である。
あくまでも出陣していたユニットが、兵数0等により退却したかどうかの判定となる。

番号リスト型 戦争出陣武将リストの控え;
void カスタム::On_残りターン変更《戦争画面》(int 残りターン数) {
	if (残りターン数 == 30) {
		// Get_出陣中の武将番号リスト【配列用】() の関数は「退却武将」や「戦死武将」は含まれないため、一番最初のターンの開始で、全員分のリストを控えておく
		戦争出陣武将リストの控え = Get_出陣中の武将番号リスト【配列用】();
	}

	for (int iBushouID : 戦争出陣武将リストの控え) {
		if (p武将戸籍情報[iBushouID].退却) {
			デバッグ出力 << Get_名字(iBushouID) + Get_名前(iBushouID) << "は、この戦争中に退却しました" << endl;
		}
	}
}

void カスタム::On_戦争終了() {
	// 戦争終了時にリストをクリア
	戦争出陣武将リストの控え.clear();
}

戦場での退却に関連する項目として、

などがあります。

武将ユニットを戦場で退却させる

int Do_コマンド《戦争画面》《退却》(int 武将番号【配列用】)

この関数はUIやメッセージ吹き出しを伴うため、
On_残りターン変更《戦争画面》 イベントハンドラなど、
「UIや吹き出しが出ても大丈夫なイベントハンドラ限定」で、かつ「別の噴き出しが出ていないとき限定」で使用可能である。

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

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

	// 1人以上武将が表示中なら...
	if (list.size() > 0) {
		// 先頭の1人が戦場から退場
		int iBushouID = list[0];
		Do_コマンド《戦争画面》《退却》(iBushouID);
	}
}
	

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

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