最終更新日 2024-09-25

ダイアログ - 武将ダイアログ(単一選択用)

武将のリストを表示して、そこから1人を選択してもらうためのダイアログを表示するAPIです。

大小関わらず、自作の独自イベントなどで利用することになるでしょう。

int 選択武将ダイアログ表示(番号リスト型 武将番号【配列用】リスト, long long カラムオプション);

void カスタム::On_プレイヤ担当ターン《メイン画面》() {
	番号リスト型 ShowBushouList;

	for (int iBushouID = 0; iBushouID < 最大数::武将情報::配列数; iBushouID++) {

		// 宿老もしくは家老である
		if (p武将戸籍情報[iBushouID].身分 == 身分::宿老 || p武将戸籍情報[iBushouID].身分 == 身分::家老) {
			// 死亡していない
			if (p武将戸籍情報[iBushouID].状態 != 状態::死亡) {
				ShowBushouList.push_back(iBushouID);
			}
		}
	}

	int iSelectedBushouID = 選択武将ダイアログ表示(ShowBushouList, カラム::武将::デフォルト);

	if (0 < iSelectedBushouID && iSelectedBushouID < 最大数::武将情報::配列数) {
		デバッグ出力 << Get_名字(iSelectedBushouID) + Get_名前(iSelectedBushouID) << "が選択されました" << endl;
	}
	else {
		デバッグ出力 << "武将は選択されませんでした" << endl;
	}
}
		

カラムを指定することで、表示の列をカスタムすることが出来ます

int iSelectedBushouID = 選択武将ダイアログ表示(ShowBushouList, カラム::武将::武将名|カラム::武将::身分|カラム::武将::忠誠 );
		

int iSelectedBushouID = 選択武将ダイアログ表示(ShowBushouList, カラム::武将::武将名);
	

武将と姫を混在させると通常と同じであるが...

void カスタム::On_プレイヤ担当ターン《メイン画面》() {
	番号リスト型 ShowBushouList;

	for (int iBushouID = 0; iBushouID < 最大数::武将情報::配列数; iBushouID++) {

		// 宿老もしくは家老もしくは姫である
		if (p武将戸籍情報[iBushouID].身分 == 身分::宿老 || p武将戸籍情報[iBushouID].身分 == 身分::家老 || p武将戸籍情報[iBushouID].状態 == 状態::姫) {
			// 死亡していない
			if (p武将戸籍情報[iBushouID].状態 != 状態::死亡) {
				ShowBushouList.push_back(iBushouID);
			}
		}
	}

	/*

	int iSelectedBushouID = 選択武将ダイアログ表示(ShowBushouList, カラム::武将::デフォルト);

	if (0 < iSelectedBushouID && iSelectedBushouID < 最大数::武将情報::配列数) {
		デバッグ出力 << Get_名字(iSelectedBushouID) + Get_名前(iSelectedBushouID) << "が選択されました" << endl;
	}
	else {
		デバッグ出力 << "武将は選択されませんでした" << endl;
	}
}
		

対象が姫だけの場合は、デフォルトでも表示が縮む(戦闘など姫と無関係な項目は無くなる[=詳細でも出なくなる])

void カスタム::On_プレイヤ担当ターン《メイン画面》() {
	番号リスト型 ShowBushouList;

	for (int iBushouID = 0; iBushouID < 最大数::武将情報::配列数; iBushouID++) {

		// 姫である
		if (p武将戸籍情報[iBushouID].状態 == 状態::姫) {
			// 12才以上である
			if (Get_武将年齢(iBushouID) >= 12) {
				// 死亡していない
				if (p武将戸籍情報[iBushouID].状態 != 状態::死亡) {
					ShowBushouList.push_back(iBushouID);
				}
			}
		}
	}

	int iSelectedBushouID = 選択武将ダイアログ表示(ShowBushouList, カラム::武将::デフォルト);

	if (0 < iSelectedBushouID && iSelectedBushouID < 最大数::武将情報::配列数) {
		デバッグ出力 << Get_名字(iSelectedBushouID) + Get_名前(iSelectedBushouID) << "が選択されました" << endl;
	}
	else {
		デバッグ出力 << "武将は選択されませんでした" << endl;
	}
}
		

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

「武将ダイアログ(単一選択用)」に関する主な所は以上となります。 詳しくは「ダイアログ情報型.h」を参照してください。