Ejemplo n.º 1
0
 internal static void Stop()
 {
     ArenaWatcher.Stop();
     PackWatcher.Stop();
     DungeonRunWatcher.Stop();
     FriendlyChallengeWatcher.Stop();
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
 }