public void TryExecuteCommand() { DraftManager draftManager = new DraftManager(); string input = Console.ReadLine(); while (true) { List <string> inputArgs = input.Split().ToList(); string commandName = inputArgs[0]; List <string> commandArgs = inputArgs.Skip(1).ToList(); Command cmdToBeExecuted = null; string result = string.Empty; switch (commandName) { case "RegisterHarvester": cmdToBeExecuted = new RegisterHarvesterCommand(draftManager, commandArgs); break; case "RegisterProvider": cmdToBeExecuted = new RegisterProviderCommand(draftManager, commandArgs); break; case "Day": cmdToBeExecuted = new StartDayCommand(draftManager, commandArgs); break; case "Mode": cmdToBeExecuted = new ChangeModeCommand(draftManager, commandArgs); break; case "Check": cmdToBeExecuted = new CheckStatusCommand(draftManager, commandArgs); break; case "Shutdown": cmdToBeExecuted = new ShutdownCommand(draftManager, commandArgs); Console.WriteLine(cmdToBeExecuted.Execute()); return; } // In case an invalid command is entered: if (cmdToBeExecuted == null) { throw new ArgumentException("Invalid command."); } result = cmdToBeExecuted.Execute(); Console.WriteLine(result); input = Console.ReadLine(); } }
/// <summary> /// Method which process input commands /// </summary> /// <param name="command">inut command</param> public void ExecuteCommand(string command) { CommandInfo commandInfo = (CommandInfo)this.commandParser.Parse(command); Command currentCommand = null; switch (commandInfo.Name) { case "start": currentCommand = new StartCommand(this, this.matrix, this.player, this.director, this.builder, this.printer); break; case "turn": currentCommand = new TurnCommand(this, this.matrix, this.player, this.printer); break; case "menu": MainMenu.PrintMenu(this); break; case "exit": currentCommand = new ExitCommand(this.matrix, this.player, this.printer); break; case "save": currentCommand = new SaveCommand(this.matrix, this.player, this.printer); break; case "load": currentCommand = new LoadCommand(this.matrix, this.player, this.printer); break; case "mode": currentCommand = new ChangeModeCommand(this, this.matrix, this.player, this.printer); break; case "highscore": currentCommand = new HighScoreCommand(this, this.matrix, this.player, this.printer); break; default: currentCommand = new InvalidCommand(this.matrix, this.player, this.printer); currentCommand.Execute(commandInfo); this.Start(); return; } currentCommand.Execute(commandInfo); this.printer.PrintMatrix(this.matrix, this.player); this.Start(); }