// 「ターン終了」コマンド private void EndTurnCommand() { // 行動していない味方ユニットの数を数える var stillActionUnits = SRC.UList.Items.Where(u => u.Party == "味方" && u.CanAction).ToList(); // 行動していないユニットがいれば警告 if (stillActionUnits.Any()) { var ret = GUI.Confirm( "行動していないユニットが" + SrcFormatter.Format(stillActionUnits.Count) + "体あります" + Environment.NewLine + "このターンを終了しますか?", "終了", GuiConfirmOption.OkCancel | GuiConfirmOption.Question ); if (ret == GuiDialogResult.Cancel) { return; } } // 行動終了していないユニットに対して行動終了イベントを実施 foreach (var currentSelectedUnit in stillActionUnits) { SelectedUnit = currentSelectedUnit; Event.HandleEvent("行動終了", currentSelectedUnit.MainPilot().ID); if (SRC.IsScenarioFinished) { SRC.IsScenarioFinished = false; return; } } // 各陣営のフェイズに移行 SRC.StartTurn("敵"); if (SRC.IsScenarioFinished) { SRC.IsScenarioFinished = false; return; } SRC.StartTurn("中立"); if (SRC.IsScenarioFinished) { SRC.IsScenarioFinished = false; return; } SRC.StartTurn("NPC"); if (SRC.IsScenarioFinished) { SRC.IsScenarioFinished = false; return; } // 味方フェイズに戻る SRC.StartTurn("味方"); SRC.IsScenarioFinished = false; }