Beispiel #1
0
        public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
        {
            var match = HsLogReaderConstants.GameModeRegex.Match(logLine.Line);

            if (!match.Success)
            {
                return;
            }
            game.CurrentMode  = GetMode(match.Groups["curr"].Value);
            game.PreviousMode = GetMode(match.Groups["prev"].Value);

            if ((DateTime.Now - logLine.Time).TotalSeconds < 5 && _lastAutoImport < logLine.Time && game.CurrentMode == Mode.TOURNAMENT)
            {
                _lastAutoImport = logLine.Time;
                var decks = DeckImporter.FromConstructed();
                if (decks.Any() && (Config.Instance.ConstructedAutoImportNew || Config.Instance.ConstructedAutoUpdate))
                {
                    DeckManager.ImportDecks(decks, false, Config.Instance.ConstructedAutoImportNew, Config.Instance.ConstructedAutoUpdate);
                }
            }

            if (game.PreviousMode == Mode.GAMEPLAY)
            {
                gameState.GameHandler.HandleInMenu();
            }

            if (game.CurrentMode == Mode.HUB && !_checkedMirrorStatus && (DateTime.Now - logLine.Time).TotalSeconds < 5)
            {
                CheckMirrorStatus();
            }
        }
Beispiel #2
0
		public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
		{
			var match = HsLogReaderConstants.GameModeRegex.Match(logLine.Line);
			if(match.Success)
			{
				game.CurrentMode = GetMode(match.Groups["curr"].Value);
				game.PreviousMode = GetMode(match.Groups["prev"].Value);

				if((DateTime.Now - logLine.Time).TotalSeconds < 5 && _lastAutoImport < logLine.Time
					&& game.CurrentMode == Mode.TOURNAMENT)
				{
					_lastAutoImport = logLine.Time;
					var decks = DeckImporter.FromConstructed();
					if(decks.Any() && (Config.Instance.ConstructedAutoImportNew || Config.Instance.ConstructedAutoUpdate))
						DeckManager.ImportDecks(decks, false, Config.Instance.ConstructedAutoImportNew,
							Config.Instance.ConstructedAutoUpdate);
				}

				if(game.PreviousMode == Mode.GAMEPLAY && game.CurrentMode != Mode.GAMEPLAY)
					gameState.GameHandler.HandleInMenu();

				if(game.CurrentMode == Mode.HUB && !_checkedMirrorStatus && (DateTime.Now - logLine.Time).TotalSeconds < 5)
					CheckMirrorStatus();
			}
			else if(logLine.Line.Contains("Gameplay.Start"))
			{
				gameState.Reset();
				gameState.GameHandler.HandleGameStart(logLine.Time);
			}
		}
        public void Handle(LogLineItem logLine, IGame game)
        {
            var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);

            if (match.Success && game.IsInMenu && new[] { TAVERN_BRAWL, TOURNAMENT, DRAFT, FRIENDLY, ADVENTURE }.Contains(game.CurrentMode))
            {
                game.MetaData.EnqueueTime = logLine.Time;
                Log.Info($"Now in queue ({logLine.Time})");
                if ((DateTime.Now - logLine.Time).TotalSeconds > 5 || !game.IsInMenu || logLine.Time <= _lastQueueTime)
                {
                    return;
                }
                _lastQueueTime = logLine.Time;
                if (!Config.Instance.AutoSelectDetectedDeck)
                {
                    return;
                }
                if (new[] { TOURNAMENT, FRIENDLY, ADVENTURE }.Contains(game.CurrentMode))
                {
                    AutoSelectDeckById(true);
                }
                else if (game.CurrentMode == DRAFT)
                {
                    AutoSelectArenaDeck();
                }
            }
        }
Beispiel #4
0
 public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
 {
     if (logLine.Line.Contains("IN_REWARDS") && game.CurrentMode == Mode.DRAFT)
     {
         Watchers.ArenaWatcher.Update();
     }
 }
Beispiel #5
0
        public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
        {
            var match = HsLogReaderConstants.GameModeRegex.Match(logLine.Line);

            if (match.Success)
            {
                game.CurrentMode  = GetMode(match.Groups["curr"].Value);
                game.PreviousMode = GetMode(match.Groups["prev"].Value);

                if ((DateTime.Now - logLine.Time).TotalSeconds < 5 && _lastAutoImport < logLine.Time &&
                    game.CurrentMode == Mode.TOURNAMENT)
                {
                    _lastAutoImport = logLine.Time;
                    var decks = DeckImporter.FromConstructed();
                    if (decks.Any() && (Config.Instance.ConstructedAutoImportNew || Config.Instance.ConstructedAutoUpdate))
                    {
                        DeckManager.ImportDecks(decks, false, Config.Instance.ConstructedAutoImportNew,
                                                Config.Instance.ConstructedAutoUpdate);
                    }
                }

                if (game.PreviousMode == Mode.GAMEPLAY && game.CurrentMode != Mode.GAMEPLAY)
                {
                    gameState.GameHandler.HandleInMenu();
                }

                if (game.CurrentMode == Mode.HUB && !_checkedMirrorStatus && (DateTime.Now - logLine.Time).TotalSeconds < 5)
                {
                    CheckMirrorStatus();
                }

                if (game.CurrentMode == Mode.DRAFT)
                {
                    Watchers.ArenaWatcher.Run();
                }
                else
                {
                    Watchers.ArenaWatcher.Stop();
                }

                if (game.CurrentMode == Mode.PACKOPENING)
                {
                    Watchers.PackWatcher.Run();
                }
                else
                {
                    Watchers.PackWatcher.Stop();
                }

                if (game.CurrentMode == Mode.TAVERN_BRAWL)
                {
                    Core.Game.CacheBrawlInfo();
                }
            }
            else if (logLine.Line.Contains("Gameplay.Start"))
            {
                gameState.Reset();
                gameState.GameHandler.HandleGameStart(logLine.Time);
            }
        }
Beispiel #6
0
        public void LineContentTest()
        {
            const string line     = "D 00:06:10.0010000 GameState.DebugPrintPower() -     tag=ZONE value=PLAY";
            var          lineItem = new LogLineItem("Power", line);

            Assert.AreEqual("D " + lineItem.Time.ToString("HH:mm:ss.fffffff") + " " + lineItem.LineContent, line);
        }
        public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
        {
            var match = HsLogReaderConstants.ConnectionRegex.Match(logLine.Line);

            if (match.Success)
            {
                game.MetaData.ServerAddress = match.Groups["address"].Value.Trim();
                game.MetaData.ClientId      = match.Groups["client"].Value.Trim();
                game.MetaData.GameId        = match.Groups["game"].Value.Trim();
                game.MetaData.SpectateKey   = match.Groups["spectateKey"].Value.Trim();

                var region = Helper.GetRegionByServerIp(game.MetaData.ServerAddress);
                if (game.CurrentRegion == Region.UNKNOWN || region == Region.CHINA)
                {
                    game.CurrentRegion = region;
                    Log.Info("Set current region to" + region);
                }

                //just to make sure this still works in case the typo gets fixed
                if (logLine.Line.ToLower().Contains("reconncting=true") || logLine.Line.ToLower().Contains("reconnecting=true"))
                {
                    game.StoreGameState();
                }
                gameState.Reset();
                gameState.GameHandler.HandleGameStart();
            }
        }
 public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
 {
     if (!logLine.Line.Contains("SetDraftMode - ACTIVE_DRAFT_DECK") || (DateTime.Now - logLine.Time).TotalSeconds > 5)
     {
         return;
     }
     DeckManager.AutoImportArena(Config.Instance.SelectedArenaImportingBehaviour ?? ArenaImportingBehaviour.AutoImportSave);
 }
        public void Handle(LogLineItem logLine, IGame game)
        {
            var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);

            if (match.Success && game.IsInMenu &&
                (game.CurrentMode == Mode.TAVERN_BRAWL || game.CurrentMode == Mode.TOURNAMENT || game.CurrentMode == Mode.DRAFT))
            {
                game.MetaData.EnqueueTime = logLine.Time;
                Log.Info($"Now in queue ({logLine.Time})");
            }
        }
Beispiel #10
0
        public void DayRolloverTest()
        {
            if (DateTime.Now.AddSeconds(5).Date > DateTime.Now.Date)
            {
                Thread.Sleep(5000);
            }
            const string line     = "D 23:59:59.9999999 GameState.DebugPrintPower() -     tag=ZONE value=PLAY";
            var          lineItem = new LogLineItem("Power", line);

            Assert.AreEqual(lineItem.Time.Date, DateTime.Now.Date.AddDays(-1));
        }
 public void Handle(LogLineItem logLine, IGame game)
 {
     var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);
     if(match.Success && game.IsInMenu
        && (game.CurrentMode == Mode.TAVERN_BRAWL || game.CurrentMode == Mode.TOURNAMENT || game.CurrentMode == Mode.DRAFT))
     {
         game.MetaData.EnqueueTime = logLine.Time;
         Log.Info($"Now in queue ({logLine.Time})");
         if((DateTime.Now - logLine.Time).TotalSeconds > 5 || !game.IsInMenu || logLine.Time <= _lastQueueTime)
             return;
         _lastQueueTime = logLine.Time;
         if(game.CurrentMode == Mode.TOURNAMENT)
             AutoSelectDeckById(true);
         else if(game.CurrentMode == Mode.DRAFT)
             AutoSelectArenaDeck();
     }
 }
		public void Handle(LogLineItem logLine, IGame game)
		{
			var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);
			if(match.Success && game.IsInMenu && new[] {TAVERN_BRAWL, TOURNAMENT, DRAFT, FRIENDLY, ADVENTURE}.Contains(game.CurrentMode))
			{
				game.MetaData.EnqueueTime = logLine.Time;
				Log.Info($"Now in queue ({logLine.Time})");
				if((DateTime.Now - logLine.Time).TotalSeconds > 5 || !game.IsInMenu || logLine.Time <= _lastQueueTime)
					return;
				_lastQueueTime = logLine.Time;
				if(!Config.Instance.AutoDeckDetection)
					return;
				if(new[] {TOURNAMENT, FRIENDLY, ADVENTURE, TAVERN_BRAWL}.Contains(game.CurrentMode))
					AutoSelectDeckById();
				else if(game.CurrentMode == DRAFT)
					AutoSelectArenaDeck();
			}
		}
Beispiel #13
0
        public void Handle(LogLineItem logLine, IGame game)
        {
            var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);

            if (match.Success && game.IsInMenu && new[] { TAVERN_BRAWL, TOURNAMENT, DRAFT, FRIENDLY, ADVENTURE }.Contains(game.CurrentMode))
            {
                game.MetaData.EnqueueTime = logLine.Time;
                Log.Info($"Now in queue ({logLine.Time})");
                if ((DateTime.Now - logLine.Time).TotalSeconds > 5 || !game.IsInMenu || logLine.Time <= _lastQueueTime)
                {
                    return;
                }
                _lastQueueTime = logLine.Time;
                if (game.CurrentMode == DRAFT)
                {
                    game.CurrentSelectedDeck = DeckImporter.ArenaInfoCache?.Deck;
                }
                else
                {
                    var selectedId = GetSelectedDeckId(game.CurrentMode);
                    game.CurrentSelectedDeck = selectedId > 0 ? Reflection.GetDecks().FirstOrDefault(deck => deck.Id == selectedId) : null;
                }
                if (!Config.Instance.AutoDeckDetection)
                {
                    return;
                }
                if (new[] { TOURNAMENT, FRIENDLY, ADVENTURE, TAVERN_BRAWL }.Contains(game.CurrentMode))
                {
                    AutoSelectDeckById(game.CurrentMode);
                }
                else if (game.CurrentMode == DRAFT)
                {
                    AutoSelectArenaDeck();
                }
            }
        }
		public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
		{
			var match = HsLogReaderConstants.ConnectionRegex.Match(logLine.Line);
			if(match.Success)
			{
				game.MetaData.ServerAddress = match.Groups["address"].Value.Trim();
				game.MetaData.ClientId = match.Groups["client"].Value.Trim();
				game.MetaData.GameId = match.Groups["game"].Value.Trim();
				game.MetaData.SpectateKey = match.Groups["spectateKey"].Value.Trim();

				var region = Helper.GetRegionByServerIp(game.MetaData.ServerAddress);
				if(game.CurrentRegion == Region.UNKNOWN || region == Region.CHINA)
				{
					game.CurrentRegion = region;
					Log.Info("Set current region to" + region);
				}

				//just to make sure this still works in case the typo gets fixed
				if(logLine.Line.ToLower().Contains("reconncting=true") || logLine.Line.ToLower().Contains("reconnecting=true"))
					game.StoreGameState();
				gameState.Reset();
				gameState.GameHandler.HandleGameStart();
			}
		}
Beispiel #15
0
        public void Handle(LogLineItem logLine, IGame game)
        {
            var match = HsLogReaderConstants.BeginBlurRegex.Match(logLine.Line);

            if (match.Success && game.IsInMenu &&
                (game.CurrentMode == Mode.TAVERN_BRAWL || game.CurrentMode == Mode.TOURNAMENT || game.CurrentMode == Mode.DRAFT))
            {
                game.MetaData.EnqueueTime = logLine.Time;
                Log.Info($"Now in queue ({logLine.Time})");
                if ((DateTime.Now - logLine.Time).TotalSeconds > 5 || !game.IsInMenu || logLine.Time <= _lastQueueTime)
                {
                    return;
                }
                _lastQueueTime = logLine.Time;
                if (game.CurrentMode == Mode.TOURNAMENT)
                {
                    AutoSelectDeckById(true);
                }
                else if (game.CurrentMode == Mode.DRAFT)
                {
                    AutoSelectArenaDeck();
                }
            }
        }
		public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
		{
			if(logLine.Line.Contains("IN_REWARDS") && game.CurrentMode == Mode.DRAFT)
				Watchers.ArenaWatcher.Update();
		}
		public void Handle(LogLineItem logLine, IHsGameState gameState, IGame game)
		{
			if(!logLine.Line.Contains("SetDraftMode - ACTIVE_DRAFT_DECK") || (DateTime.Now - logLine.Time).TotalSeconds > 5)
				return;
			DeckManager.AutoImportArena(Config.Instance.SelectedArenaImportingBehaviour ?? ArenaImportingBehaviour.AutoImportSave);
		}