private static void detectCommand(string command) { int whiteSpaces = countSpaces(command); switch (whiteSpaces) { case 0: //Movement Robot activeRobot = RobotRepository.getInstance().Get().First(r => r.isActive()); IEnumerable <IMovement> robotAMovements = MovementParser.Parse(command); robotAMovements.ForEach(x => x.ExecuteOn(activeRobot)); Console.WriteLine("{0} {1} {2}", activeRobot.getCoordinate().getX(), activeRobot.getCoordinate().getY(), activeRobot.getDirection()); break; case 1: //Arena Arena arena = ArenaParser.Parse(command); Console.WriteLine(String.Format("Added new Arena: x - {0}, y - {1}", arena.getWidth(), arena.getHeight())); ArenaRepository.getInstance().Add(ArenaParser.Parse(command)); break; case 2: //Robot RobotRepository.getInstance().Add(new RobotCoordinateParser().Parse(command)); break; default: throw new Exception(); } }
public void Parse_should_return_the_Arena(string inputString, int expectedArenaWidth, int expecredArenaHeight) { Arena arena = ArenaParser.Parse(inputString); arena.Width.Should().Be.EqualTo(expectedArenaWidth); arena.Height.Should().Be.EqualTo(expecredArenaHeight); }
public GameEventManager(Game game, ILogInput logInput, IGameDataProvider gameData) { _game = game; _gameData = gameData; _arenaWatcher = new ArenaWatcher(gameData); _arenaWatcher.RunComplete += game.Arena.OnArenaRunComplete; _arenaWatcher.CardPicked += game.Arena.OnArenaDraftPick; _arenaWatcher.ChoicesChanged += game.Arena.OnArenaDraftChoices; _arenaWatcher.DeckComplete += game.Arena.OnArenaDraftComplete; _packWatcher = new PackWatcher(gameData); _packWatcher.PackOpened += game.OnPackOpened; _dungeonRunWatcher = new DungeonRunWatcher(new DungeonRunData(game, gameData)); _dungeonRunWatcher.DungeonRunMatchStarted += game.OnDungeonRunMatchStarted; _dungeonRunWatcher.DungeonRunDeckUpdated += game.OnDungeonRunDeckUpdated; _friendlyChallengeWatcher = new FriendlyChallengeWatcher(gameData); _friendlyChallengeWatcher.FriendlyChallenge += game.OnFriendlyChallenge; var logParserManager = new LogParserManager(); var powerParser = new PowerParser(new DefaultGameInfoProvider(game)); powerParser.CreateGame += () => game.OnCreateGame(null); powerParser.PowerTaskListLog += args => game.OnGameTimeChanged(args.Line.Time); powerParser.GameStateChange += mod => game.CurrentGame?.Apply(mod); powerParser.BlockStart += block => game.GameStateEvents.OnBlockStart(block, game.CurrentGame); powerParser.BlockEnd += block => game.GameStateEvents.OnBlockEnd(block, game.CurrentGame); powerParser.GameStateLog += args => game.CurrentGame?.AppendLog(args); powerParser.SetupComplete += game.OnSetupComplete; logParserManager.RegisterParser(powerParser); var decksParser = new DecksParser(); decksParser.FindingGame += game.OnQueuedForGame; decksParser.EditedDeck += game.Collection.OnDeckEdited; decksParser.FoundDecks += game.Collection.OnDecksLoaded; logParserManager.RegisterParser(decksParser); var loadingScreenParser = new LoadingScreenParser(); loadingScreenParser.ModeChanged += game.OnModeChanged; loadingScreenParser.ModeChanged += LoadingScreenParser_OnModeChanged; logParserManager.RegisterParser(loadingScreenParser); var arenaParser = new ArenaParser(); arenaParser.ArenaRunComplete += () => _arenaWatcher.Update(); logParserManager.RegisterParser(arenaParser); var rachelleParser = new RachelleParser(); rachelleParser.DeckDeleted += game.Collection.OnDeckDeleted; rachelleParser.GoldProgressWins += game.OnGoldProgressWins; logParserManager.RegisterParser(rachelleParser); logInput.NewLines += eventArgs => logParserManager.Parse(eventArgs.Lines); }
public void RunComplete() { var complete = false; var parser = new ArenaParser(); parser.ArenaRunComplete += () => complete = true; parser.Parse(new Line("Arena", "D 18:21:33.7795321 SetDraftMode - IN_REWARDS")); Assert.IsTrue(complete); }
public void Parse_should_throw_an_ArgumentException_when_unable_to_parse_the_input(string inputString) { Assert.Throws <ArgumentException>(() => ArenaParser.Parse(inputString)); }