void On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号)
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
}
例①
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
デバッグ出力 << "コマンド発生" << endl;
}
void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {
デバッグ出力 << "コマンド完了" << endl;
}
例②
int ターゲットコマンド発生 = 0;
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
/* 特定のコマンドが発生したのかどうかの判定 */
if ( メインコマンド番号 == メイン画面::メインコマンド名::本城 ) {
デバッグ出力 << "本城コマンド発生" << endl;
ターゲットコマンド発生 = メインコマンド番号;
}
else if ( サブコマンド番号 == メイン画面::サブコマンド名::軍事::訓練 ) {
デバッグ出力 << "軍事->訓練コマンド発生" << endl;
ターゲットコマンド発生 = サブコマンド番号;
}
}
void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {
if ( ターゲットコマンド発生 ) {
ターゲットコマンド発生 = 0;
デバッグ出力 << "コマンド脱却" << endl;
}
}
例③
BOOL iFlagOf金1000 = FALSE;
void カスタム::On_プレイヤコマンド発生直前《メイン画面》(int メインコマンド番号, int サブコマンド番号) {
/*
何かコマンドを実行する度に、今ターン中のプレイヤ大名の軍団の金が1000増える。
*/
デバッグ出力 << "コマンド発生" << endl;
iFlagOf金1000 = TRUE;
}
void カスタム::On_プレイヤコマンド完了直前《メイン画面》() {
デバッグ出力 << "コマンド完了" << endl;
if ( iFlagOf金1000 ) {
iFlagOf金1000 = FALSE; // フラグは下す
// 現在ターンがまわっている軍団。iFlagOf金1000が立ってるということは、事実上プレイヤがコマンド入力で操作している軍団。
int iGundanID = pターン情報.現在のターン【軍団番号】-1;
// 一応のチェック
if ( 0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
// オーバーフロー防止のため、一度int型で計算する。
int 金 = p軍団情報[iGundanID].金;
金 += 1000;
金 = min( 60000, 金 ); // 60000以上なら60000とする。
p軍団情報[iGundanID].金 = 金; // 65535までしかないWORD型に収まっていると保障されたので、値を代入。
}
}
}