コード例 #1
0
 internal static void Stop()
 {
     ArenaWatcher.Stop();
     PackWatcher.Stop();
     DungeonRunWatcher.Stop();
     FriendlyChallengeWatcher.Stop();
 }
コード例 #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);
        }
コード例 #3
0
 public void Initialize()
 {
     _choicesChangedCalls = 0;
     _cardPickedCalls     = 0;
     _completeDeckCalls   = 0;
     _rewardsCalls        = 0;
     _currentChoices      = null;
     _currentPick         = null;
     _provider            = new TestArenaProvider();
     _watcher             = new ArenaWatcher(_provider);
     SetupWatcher();
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 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);
 }
コード例 #6
0
 public void ProviderCanNotBeNull()
 {
     _watcher = new ArenaWatcher(null);
 }
コード例 #7
0
 internal static void Stop()
 {
     ArenaWatcher.Stop();
     PackWatcher.Stop();
     DungeonRunWatcher.Stop();
 }