internal static void Stop() { ArenaWatcher.Stop(); PackWatcher.Stop(); DungeonRunWatcher.Stop(); FriendlyChallengeWatcher.Stop(); }
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 Initialize() { _choicesChangedCalls = 0; _cardPickedCalls = 0; _completeDeckCalls = 0; _rewardsCalls = 0; _currentChoices = null; _currentPick = null; _provider = new TestArenaProvider(); _watcher = new ArenaWatcher(_provider); SetupWatcher(); }
public void Run_NewDeck() { _watcher = new ArenaWatcher(_provider, 5); SetupWatcher(); _watcher.Run(); Thread.Sleep(100); Assert.AreEqual(0, _choicesChangedCalls); Assert.AreEqual(0, _cardPickedCalls); _provider.ArenaInfo = new ArenaInfo() { Deck = new Deck() { Id = 1 }, CurrentSlot = 0 }; _provider.DraftChoices = new[] { NewCard("HERO_01"), NewCard("HERO_02"), NewCard("HERO_03") }; Thread.Sleep(100); Assert.AreEqual(_provider.DraftChoices, _currentChoices); Assert.AreEqual(1, _choicesChangedCalls); Assert.AreEqual(0, _cardPickedCalls); _provider.DraftChoices = null; _provider.ArenaInfo = new ArenaInfo() { Deck = new Deck() { Id = 1, Hero = "HERO_02" }, CurrentSlot = 1 }; Thread.Sleep(100); Assert.AreEqual(1, _choicesChangedCalls); Assert.AreEqual(0, _cardPickedCalls); _provider.DraftChoices = new[] { NewCard("AT_001"), NewCard("AT_002"), NewCard("AT_003") }; Thread.Sleep(100); Assert.AreEqual(1, _cardPickedCalls); Assert.AreEqual("HERO_02", _currentPick.Id); Assert.AreEqual(2, _choicesChangedCalls); Thread.Sleep(100); Assert.AreEqual(2, _choicesChangedCalls); Assert.AreEqual(1, _cardPickedCalls); Assert.AreEqual(_provider.DraftChoices, _currentChoices); }
public void Run_StartMultipleTimes_OnlyRunsOnce() { _watcher = new ArenaWatcher(_provider, 5); SetupWatcher(); _watcher.Run(); _watcher.Run(); _watcher.Run(); _provider.ArenaInfo = new ArenaInfo { Deck = new Deck() { Id = 1, Hero = "HERO_02", Cards = new List <Card> { NewCard("AT_001", 30) } } }; Thread.Sleep(100); Assert.IsNotNull(_currentArenaInfo); Assert.AreEqual(1, _completeDeckCalls); Assert.AreEqual(0, _rewardsCalls); }
public void ProviderCanNotBeNull() { _watcher = new ArenaWatcher(null); }
internal static void Stop() { ArenaWatcher.Stop(); PackWatcher.Stop(); DungeonRunWatcher.Stop(); }