public void InAdventureScreen_InfoNotUpdatedUntilReset() { _data.InAdventureScreen = true; _data.MockDungeonInfo = new[] { new MockDungeonInfo { RunActive = true, DbfIds = new List <int> { Backstab }, LootA = new List <int> { Category, DeadlyPoison }, LootB = new List <int> { Category, PitSnake }, LootC = new List <int> { Category, SinisterStrike }, Treasure = new List <int> { BattleTotem, PotionOfVitality, CrystalGem }, PlayerChosenLoot = 1, PlayerChosenTreasure = 1 }, new MockDungeonInfo { RunActive = false, } }; _watcher.Update(); Assert.IsNotNull(_info); _info = null; _watcher.Update(); Assert.IsNull(_info); _watcher.Run(); Thread.Sleep(130); Assert.IsNotNull(_info); }
private async void LoadingScreenParser_OnModeChanged(ModeChangedEventArgs args) { if (args.PreviousMode >= Mode.LOGIN && !_game.Account.IsLoaded) { _game.OnHearthstoneLoaded(); var battleTag = await Retry(_gameData.GetBattleTag); var account = await Retry(_gameData.GetAccountId); if (battleTag != null && account != null) { _game.Account.Update(account.Hi, account.Lo, battleTag.Name, battleTag.Number); _game.Region = (BnetRegion)((account.Hi >> 32) & 0xFF); } } if (ShouldUpdateCollection(args.PreviousMode, args.PreviousMode)) { var collection = await Retry(_gameData.GetFullCollection); if (collection != null) { var cards = collection.Cards .GroupBy(x => x.Id) .Select(g => new CollectionCard(g.Key, g.FirstOrDefault(x => !x.Premium)?.Count ?? 0, g.FirstOrDefault(x => x.Premium)?.Count ?? 0 )).ToList(); var favoriteHeroes = collection.FavoriteHeroes.Values.Select(x => new CollectionCard(x.Id, x.Premium ? 0 : 1, x.Premium ? 1 : 0)) .ToList(); _game.Collection.Update(cards, collection.CardBacks, favoriteHeroes, collection.FavoriteCardBack, collection.Dust, collection.Gold); } } if (args.CurrentMode == Mode.DRAFT) { _arenaWatcher.Run(); } else { _arenaWatcher.Stop().Forget(); } if (args.CurrentMode == Mode.PACKOPENING) { _packWatcher.Run(); } else { _packWatcher.Stop().Forget(); } if (args.CurrentMode == Mode.ADVENTURE || args.PreviousMode == Mode.ADVENTURE && args.CurrentMode == Mode.GAMEPLAY) { _dungeonRunWatcher.Run(); } else { _dungeonRunWatcher.Stop().Forget(); } if (args.CurrentMode == Mode.TAVERN_BRAWL) { var brawlInfo = _gameData.GetBrawlInfo(); if (brawlInfo != null) { _game.TavernBrawl.Update(brawlInfo); } } if (args.CurrentMode == Mode.FATAL_ERROR) { _game.OnHearthstoneExited(); } }