private void RunMainAndEpilog(Commands.BaseCommand command) { Debug.Assert(command.Context == this); Debug.Assert(RunningCommand == null); RunningCommand = command; if (command.ValidateOnRun() && command.DefaultValidateOnRun(this)) { command.ExecutionPhase = Commands.CommandPhase.Main; command.RunMain(); if (!(command is Commands.ISilentCommand)) { command.ExecutionPhase = Commands.CommandPhase.Epilog; GetCommandRunner(command.GetType()).RunEpilog(command); } } Game.Controller.OnCommandEnd(command); RunningCommand = null; }