最終更新日 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」を参照してください。