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(); } }
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(); } } }
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) { 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); } }
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})"); } }
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(); } }
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(); } }
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); }