public CommandResponse Execute(GameState game, string[] args) { switch (args[0]) { case "super_regions": for (int i = 1; i < args.Length; i += 2) game.Map.SuperRegions.Add(new SuperRegion(int.Parse(args[i]), int.Parse(args[i + 1]))); break; case "regions": for (int i = 1; i < args.Length; i += 2) game.Map.Regions.Add(new Region(int.Parse(args[i]), game.Map.SuperRegions[int.Parse(args[i + 1])])); break; case "neighbors": for (int i = 1; i < args.Length; i+=2) { var region = game.Map.Regions[int.Parse(args[i])]; foreach (string neighborId in args[i + 1].Split(new[] {','})) { var neighbor = game.Map.Regions[int.Parse(neighborId)]; region.Neighbors.Add(neighbor); neighbor.Neighbors.Add(region); } } break; } return new CommandResponse(CommandAction.None); }
public CommandResponse Execute(GameState game, string[] args) { var updatedRegions = new Regions(); // Update visible regions for (int i = 0; i < args.Length; i += 3) { int regionId = int.Parse(args[i]); int armies = int.Parse(args[i + 2]); string ownerId = args[i + 1]; Region region = game.Map.Regions[regionId]; region.Armies = armies; region.IsVisible = true; if (ownerId == "neutral") region.Owner = null; else region.Owner = ownerId == game.Bot.BotPlayer.Id ? game.Bot.BotPlayer : game.Opponents[args[i + 1]]; updatedRegions.Add(region); } // Mark invisible regions as such. Leave the previous info in place for now. game.Map.Regions.Except(updatedRegions).ToList().ForEach(r => { r.IsVisible = false; }); return new CommandResponse(CommandAction.None); }
public CommandResponse Execute(GameState game, string[] args) { var availableOptions = new Regions(); for (int i = 1; i < args.Length; i++) availableOptions.Add(game.Map.Regions[int.Parse(args[i])]); Regions selectedRegions = game.Bot.PickStartingRegions(game.Map, availableOptions); return new CommandResponse(CommandAction.SendData, string.Join(" ", selectedRegions.Select(r => r.Id.ToString()))); }
public CommandResponse Execute(GameState game, string[] args) { switch (args[0]) { case "your_bot": game.Bot.BotPlayer = new Player(args[1], friendly: true); break; case "opponent_bot": game.Opponents.Add(new Player(args[1])); break; case "starting_armies": game.BeginNewTurn(); game.Bot.BotPlayer.DeployableArmies = int.Parse(args[1]); break; } return new CommandResponse(CommandAction.None); }
public CommandResponse Execute(GameState game, string[] args) { var response = new StringBuilder(); switch (args[0]) { case "place_armies": foreach (ArmyPlacement placement in game.Bot.PlaceArmies(game.Map)) response.AppendFormat("{0} place_armies {1} {2},", game.Bot.BotPlayer.PlayerName, placement.Region.Id, placement.Armies); break; case "attack/transfer": foreach (AttackTransfer move in game.Bot.AttackTransfer(game.Map)) response.AppendFormat("{0} attack/transfer {1} {2} {3},", game.Bot.BotPlayer.PlayerName, move.Source.Id, move.Target.Id, move.Armies); break; } if (response.Length == 0) response.Append("No moves"); return new CommandResponse(CommandAction.SendData, response.ToString().TrimEnd(new[]{','})); }
public CommandManager(GameState game) { _game = game; }
public CommandResponse Execute(GameState game, string[] args) { return new CommandResponse(CommandAction.Quit); }
public CommandResponse Execute(GameState game, string[] args) { return new CommandResponse(CommandAction.None); // Noop for now }