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 Statistic(int packId, History History) { this._packId = packId; this._packs = new List <Pack>(History.Where(x => x.Id == packId)); foreach (var Pack in this._packs) { this.CountRarity(Pack); this.CountStreak(Pack); } var grant = PackWatcher.UpdateGranted(); if (grant != null) { foreach (var kvp in grant) { _everGranted[kvp.Key] = kvp.Value; } } History.CollectionChanged += (sender, e) => { if (e.Action == NotifyCollectionChangedAction.Add) { foreach (Pack Pack in e.NewItems) { if (Pack.Id == this._packId) { this._packs.Add(Pack); this.CountRarity(Pack); this.CountStreak(Pack); if (Pack.Cards.Any(x => x.Rarity == Rarity.COMMON)) { this.OnPropertyChanged("CommonAmount"); } if (Pack.Cards.Any(x => x.Rarity == Rarity.RARE)) { this.OnPropertyChanged("RareAmount"); } if (Pack.Cards.Any(x => x.Rarity == Rarity.EPIC)) { this.OnPropertyChanged("EpicAmount"); } if (Pack.Cards.Any(x => x.Rarity == Rarity.LEGENDARY)) { this.OnPropertyChanged("LegendaryAmount"); } this.OnPropertyChanged("CommonCards"); this.OnPropertyChanged("CommonPacks"); this.OnPropertyChanged("RareCards"); this.OnPropertyChanged("RarePacks"); this.OnPropertyChanged("EpicCards"); this.OnPropertyChanged("EpicPacks"); this.OnPropertyChanged("LegendaryCards"); this.OnPropertyChanged("LegendaryPacks"); this.OnPropertyChanged("TotalPacks"); } } } var dictionary = PackWatcher.UpdateGranted(); if (dictionary != null) { foreach (var kvp in dictionary) { _everGranted[kvp.Key] = kvp.Value; } } }; }
internal static void Stop() { ArenaWatcher.Stop(); PackWatcher.Stop(); DungeonRunWatcher.Stop(); }