public static void Main()
{
var game = new Game();
var finalResult = new StringBuilder();
var line = Console.ReadLine();
while (line != "end")
{
var command = Command.Parse(line);
switch (command.Name)
{
case "add":
var unit = Unit.Parse(command.Arguments);
var added = game.Add(unit);
if (added)
{
finalResult.AppendLine(string.Format("SUCCESS: {0} added!", unit.Name));
}
else
{
finalResult.AppendLine(string.Format("FAIL: {0} already exists!", unit.Name));
}
break;
case "remove":
var name = command.Arguments[0];
var removed = game.Remove(name);
if (removed)
{
finalResult.AppendLine(string.Format("SUCCESS: {0} removed!", name));
}
else
{
finalResult.AppendLine(string.Format("FAIL: {0} could not be found!", name));
}
break;
case "find":
var type = command.Arguments[0];
var found = game.FindByType(type);
finalResult.AppendLine(string.Format("RESULT: {0}", string.Join(", ", found)));
break;
case "power":
var mostPowerful = game.MostPowerful(int.Parse(command.Arguments[0]));
finalResult.AppendLine(string.Format("RESULT: {0}", string.Join(", ", mostPowerful)));
break;
default:
throw new InvalidOperationException();
}
line = Console.ReadLine();
}
Console.WriteLine(finalResult.ToString().Trim());
}