internal void GameStart() { try { //MetaLog.Info("Opponent Class: " + Core.Game.MatchInfo.OpposingPlayer.Name, "GameStart"); MetaLog.Info("Game Mode: " + Core.Game.CurrentGameMode, "GameStart"); MetaLog.Info("Game Format: " + Core.Game.CurrentFormat, "GameStart"); MetaLog.Info("Region: " + Core.Game.CurrentRegion, "GameStart"); MetaLog.Info("Mode: " + Core.Game.CurrentMode, "GameStart"); _trackOpponentCards.Clear(); _trackPlayerCards.Clear(); if (_validGameMode) { _opponentTurnCount = 0; _playerTurnCount = 0; MetaLog.Info("New Game Started. Waiting for opponent to play cards.", "GameStart"); } } catch (Exception ex) { MetaLog.Error(ex); } }
internal async Task <string> sendCardStats() { try { MetaLog.Info("Uploading Game to MetaStats.net ...", "sendRequest"); string url = "http://metastats.net/metadetector/stats.php?a=Stats&v=0.0.2"; string postData = GetCardStats(); if (postData != "") { WebClient client = new WebClient(); byte[] data = Encoding.UTF8.GetBytes(postData); //byte[] data = Compress.Zip(postData); Uri uri = new Uri(url); var response = Encoding.UTF8.GetString(await client.UploadDataTaskAsync(uri, "POST", data)); MetaLog.Info("Game Upload Done", "sendRequest"); return(response); } return(null); } catch (Exception ex) { MetaLog.Error(ex); return(null); } }
public bool checkNewVersion() { try { string currentVersion = _appConfig.currentVersion; DateTime lastCheck = _appConfig.lastCheck; if ((DateTime.Now - lastCheck).TotalDays > 3) { MetaLog.Info("Checking for new version of Meta File"); WebClient client = new WebClient(); String versionNumber = client.DownloadString("http://ec2-54-88-223-252.compute-1.amazonaws.com/metaversion.php"); if (versionNumber.Trim() != "") { if (versionNumber != currentVersion) { DownloadMetaFile(); _appConfig.currentVersion = versionNumber; _appConfig.lastCheck = DateTime.Now; _appConfig.Save(); return(true); } } } return(false); } catch (Exception ex) { MetaLog.Error(ex); return(false); } }
public MetaStats(MetaConfig conf) { try { //_mainWindow = new OpDeckWindow(); _appConfig = conf; _opponentCardsPlayed = new List <Card>(); bool showBubble = false; if (showBubble) { try { NotificationWindow notify = new NotificationWindow(); notify.Show(); } catch (Exception ex) { MetaLog.Error(ex); } } MetaLog.Initialize(); MetaLog.Info("Meta Stats Initialized", "MetaStats"); } catch (Exception ex) { MetaLog.Error(ex); } }
public void PlayerHeroPower() { try { CardInfo temp = new CardInfo(); temp.cardId = "HERO_POWER"; temp.cardName = "Hero Power"; temp.turn = Convert.ToInt16(Math.Ceiling(Core.Game.GameEntity.GetTag(GameTag.TURN) / 2.0)); temp.mana = Core.Game.OpponentEntity.GetTag(GameTag.RESOURCES); temp.manaOverload = Core.Game.OpponentEntity.GetTag(GameTag.OVERLOAD_OWED); temp.activePlayer = "Player"; _trackPlayerCards.Add((_playerTurnCount * 500), temp); /*_cardsPlayed.Add("HERO_POWER", Convert.ToInt16(Math.Ceiling(Core.Game.GameEntity.GetTag(GameTag.TURN) / 2.0)), false, -1, false, -1, * Core.Game.MatchInfo.OpposingPlayer.StandardRank, Core.Game.MatchInfo.OpposingPlayer.StandardLegendRank, Core.Game.MatchInfo.LocalPlayer.StandardRank, * Core.Game.MatchInfo.LocalPlayer.StandardLegendRank, Core.Game.MatchInfo.RankedSeasonId, * "Hero Power", Core.Game.PlayerEntity.GetTag(GameTag.RESOURCES), Core.Game.PlayerEntity.GetTag(GameTag.OVERLOAD_OWED), "Player"); */ MetaLog.Info("Turn " + _playerTurnCount + ": Player Hero Power", "PlayerHeroPower"); } catch (Exception ex) { MetaLog.Error(ex); } }
public void OnUnload() { _MetaDetector.saveConfig(); _MainWindow.Close(); _MetaDetector = null; _MainWindow = null; MetaLog.Info("Plugin Unload Successful"); }
public void PlayerPlay(Card cardPlayed) { try { updatePlayerHandCards(); updatePlayerBoardEntities(); MetaLog.Info("Turn " + _playerTurnCount + ": Player Played - " + cardPlayed.Name, "PlayerPlay"); } catch (Exception ex) { MetaLog.Error(ex); } }
internal void OpponentPlay(Card cardPlayed) { if (_validGameMode) { MetaLog.Info("Opponent Played: " + cardPlayed.Name); _opponentCardsPlayed.Add(cardPlayed); if (cardPlayed.Id != "GAME_005") //ignore the coin { _opponentCardCount++; updateDecks(); } } }
internal void PlayerMulligan(Card c) { try { _trackPlayerCards.FirstOrDefault(x => x.Value.cardId == c.Id).Value.mulligan = true; //_trackPlayerCards.FirstOrDefault(x => x.Value.cardId == c.Id).Value.cardId = ""; MetaLog.Info("Player Mulliganed " + c.Name, "PlayerMulligan"); } catch (Exception ex) { MetaLog.Error(ex); } }
public void OnLoad() { try { if (!Directory.Exists(pluginDir)) { Directory.CreateDirectory(pluginDir); } _appConfig = MetaConfig.Load(); _appConfig.Save(); _MetaStats = new MetaStats(_appConfig); _MetaDetectorMenuItem = new PluginMenu(_appConfig.userKey); GameEvents.OnGameStart.Add(_MetaStats.GameStart); GameEvents.OnGameEnd.Add(_MetaStats.GameEnd); GameEvents.OnTurnStart.Add(_MetaStats.TurnStart); GameEvents.OnOpponentPlay.Add(_MetaStats.OpponentPlay); GameEvents.OnOpponentDraw.Add(_MetaStats.OpponentDraw); GameEvents.OnOpponentCreateInPlay.Add(_MetaStats.OpponentCreateInPlay); GameEvents.OnOpponentCreateInDeck.Add(_MetaStats.OpponentCreateInDeck); GameEvents.OnOpponentHeroPower.Add(_MetaStats.OpponentHeroPower); GameEvents.OnOpponentSecretTriggered.Add(_MetaStats.OpponentSecretTriggered); GameEvents.OnOpponentPlayToGraveyard.Add(_MetaStats.OpponentPlayToGraveyard); GameEvents.OnOpponentMulligan.Add(_MetaStats.OpponentMulligan); GameEvents.OnPlayerDraw.Add(_MetaStats.PlayerDraw); GameEvents.OnPlayerPlay.Add(_MetaStats.PlayerPlay); GameEvents.OnPlayerCreateInPlay.Add(_MetaStats.PlayerCreateInPlay); GameEvents.OnPlayerCreateInDeck.Add(_MetaStats.PlayerCreateInDeck); GameEvents.OnPlayerHeroPower.Add(_MetaStats.PlayerHeroPower); GameEvents.OnPlayerMulligan.Add(_MetaStats.PlayerMulligan); CheckForUpdate(); //_MainWindow.Show(); //_MainWindow.Visibility = System.Windows.Visibility.Hidden; MetaLog.Info("Plugin Load Successful"); } catch (Exception ex) { MetaLog.Error(ex); MetaLog.Info("Plugin Load Unsuccessful"); } }
public void OpponentPlay(Card cardPlayed) { try { updateOpponentCardsPlayed(); if (cardPlayed != null) { MetaLog.Info("Turn " + _opponentTurnCount + ": Opponent Played - " + cardPlayed.Name, "OpponentPlay"); } } catch (Exception ex) { MetaLog.Error(ex); } }
public MetaDetector(OpDeckWindow mainWindow) { _mainWindow = new OpDeckWindow(); _mainWindow = mainWindow; _lastGuessDeck = new Deck(); _metaDecks = new List <Deck>(); _matchedDecks = new List <Deck>(); _statsUpdated = false; _opponentCardsPlayed = new List <Card>(); _appConfig = MyConfig.Load(); _appConfig.Save(); MetaLog.Initialize(); LoadMetaDecks(); MetaLog.Info("Meta Detector Initialized"); }
internal void GameStart() { MetaLog.Info("Game Mode: " + Core.Game.CurrentGameMode); checkGameMode(); if (_validGameMode) { _opponentCardCheck = 2; _opponentCardCount = 0; _opponentTurnCount = 0; //if (_mainWindow.Visibility == System.Windows.Visibility.Hidden || _mainWindow.Visibility == System.Windows.Visibility.Collapsed) // _mainWindow.Show(); _mainWindow.updateCardsCount(_opponentCardCount); _mainWindow.resetWindow(_metaDecks); MetaLog.Info("New Game Started. Waiting for opponent to play cards."); } }
private void updatePlayerHandCards() { try { foreach (var e in Core.Game.Entities.Where(x => x.Value.CardId != null && x.Value.CardId != "" && !x.Value.IsHero && !x.Value.IsHeroPower && x.Value.IsInHand && x.Value.GetTag(GameTag.CONTROLLER) == Core.Game.Player.Id).ToList()) { if (_trackPlayerCards.Where(x => x.Key == e.Value.Id).Count() > 0) { if (_trackPlayerCards[e.Value.Id].turnDrawn == 0 && e.Value.Info.Turn > 0) { _trackPlayerCards[e.Value.Id].turnDrawn = e.Value.Info.Turn; } } else { MetaLog.Info("Turn " + _playerTurnCount + ": Player Draws " + e.Value.LocalizedName); CardInfo tempInfo = new CardInfo(); tempInfo.turnDrawn = e.Value.Info.Turn; tempInfo.mulligan = e.Value.Info.Mulliganed; tempInfo.cardId = e.Value.CardId; tempInfo.cardName = e.Value.Card.Name; tempInfo.isCreated = e.Value.Info.Created; tempInfo.activePlayer = "Player"; if (e.Value.GetTag(GameTag.CREATOR) > 0) { tempInfo.createdBy = Core.Game.Entities[e.Value.GetTag(GameTag.CREATOR)].CardId; } _trackPlayerCards.Add(e.Value.Id, tempInfo); } } } catch (Exception ex) { MetaLog.Error(ex); } }
internal void GameEnd() { if (_validGameMode) { try { if (_statsUpdated) { SaveMetaDeckStats(); } _matchedDecks = new List <Deck>(_metaDecks); _mainWindow.updateText("Waiting for new Game...", Brushes.White); MetaLog.Info("Game Ended. Waiting for new Game"); } catch (Exception ex) { MetaLog.Error(ex); } } }
public void OnLoad() { var xml = XDocument.Load(Config.Instance.DataDir + @"\plugins.xml"); // Query the data and write out a subset of contacts /*var query = from c in xml.Root.Descendants("ArrayOfPluginSettings") * where c.Element("FileName").Value.ToString() == "Plugins/MetaStats/MetaStats.dll" * select c.Element("IsEnabled");*/ var allPlugins = xml.Root.Descendants("PluginSettings").Where(x => x.Element("IsEnabled").Value == "true"); //MetaLog.Info("Testing XML: " + allPlugins); foreach (var enabledPluging in allPlugins) { if (enabledPluging.Element("Name").Value.Trim() == "Meta Stats") { VersionWindow _ver = new VersionWindow(); _ver.Show(); //throw new Exception("MetaStats Plugin already Enabled. Please Disable that first."); } } try { _MainWindow = new OpDeckWindow(); _MetaDetectorMenuItem = new PluginMenu(_MainWindow); _MetaDetector = new MetaDetector(_MainWindow); _MainWindow.updateVersion(Version); GameEvents.OnGameStart.Add(_MetaDetector.GameStart); GameEvents.OnGameEnd.Add(_MetaDetector.GameEnd); GameEvents.OnTurnStart.Add(_MetaDetector.TurnStart); GameEvents.OnOpponentPlay.Add(_MetaDetector.OpponentPlay); GameEvents.OnOpponentDraw.Add(_MetaDetector.OpponentDraw); GameEvents.OnOpponentCreateInPlay.Add(_MetaDetector.OpponentCreateInPlay); GameEvents.OnOpponentCreateInDeck.Add(_MetaDetector.OpponentCreateInDeck); GameEvents.OnOpponentHeroPower.Add(_MetaDetector.OpponentHeroPower); GameEvents.OnOpponentSecretTriggered.Add(_MetaDetector.OpponentSecretTriggered); GameEvents.OnOpponentPlayToGraveyard.Add(_MetaDetector.OpponentPlayToGraveyard); GameEvents.OnOpponentMulligan.Add(_MetaDetector.OpponentMulligan); GameEvents.OnPlayerDraw.Add(_MetaDetector.PlayerDraw); GameEvents.OnPlayerPlay.Add(_MetaDetector.PlayerPlay); GameEvents.OnPlayerCreateInPlay.Add(_MetaDetector.PlayerCreateInPlay); GameEvents.OnPlayerCreateInDeck.Add(_MetaDetector.PlayerCreateInDeck); GameEvents.OnPlayerHeroPower.Add(_MetaDetector.PlayerHeroPower); GameEvents.OnPlayerMulligan.Add(_MetaDetector.PlayerMulligan); CheckForUpdate(); //_MainWindow.Show(); //_MainWindow.Visibility = System.Windows.Visibility.Hidden; MetaLog.Info("Plugin Load Successful"); } catch (Exception ex) { MetaLog.Error(ex); MetaLog.Info("Plugin Load Unsuccessful"); } }
public void OnUnload() { _MetaStats = null; MetaLog.Info("Plugin Unload Successful"); }
public async void GameEnd() { if (_validGameMode) { try { MetaLog.Info("Game Ended. Waiting for new Game", "GameEnd"); } catch (Exception ex) { MetaLog.Error(ex); } } //get all cards played / died in the game try { foreach (var x in Core.Game.Opponent.Graveyard.Where(x => !x.IsHero && !x.IsHeroPower && x.CardId != "")) { CardInfo temp; if (_trackOpponentCards.TryGetValue(x.Id, out temp)) { _trackOpponentCards[x.Id].turnToGraveyard = x.Info.Turn; _trackOpponentCards[x.Id].cardName = x.Card.Name; } } foreach (var x in Core.Game.Player.Graveyard.Where(x => !x.IsHero && !x.IsHeroPower && x.CardId != "")) { CardInfo temp; if (_trackPlayerCards.TryGetValue(x.Id, out temp)) { _trackPlayerCards[x.Id].turnToGraveyard = x.Info.Turn; _trackPlayerCards[x.Id].cardName = x.Card.Name; } } GameInfo tempGameInfo = new GameInfo(); var standard = Core.Game.CurrentFormat == Format.Standard; tempGameInfo.userKey = _appConfig.userKey; tempGameInfo.gameId = null; tempGameInfo.gameFormat = Core.Game.CurrentFormat.ToString(); tempGameInfo.gameMode = Core.Game.CurrentGameMode.ToString(); tempGameInfo.region = Core.Game.CurrentRegion.ToString(); tempGameInfo.rankedSeasonId = Core.Game.MatchInfo.RankedSeasonId; tempGameInfo.playerClass = Core.Game.CurrentGameStats.PlayerHero; tempGameInfo.playerRank = standard ? Core.Game.MatchInfo.LocalPlayer.StandardRank : Core.Game.MatchInfo.LocalPlayer.WildRank; tempGameInfo.playerLegendRank = standard ? Core.Game.MatchInfo.LocalPlayer.StandardLegendRank : Core.Game.MatchInfo.LocalPlayer.WildLegendRank; tempGameInfo.opponentClass = Core.Game.CurrentGameStats.OpponentHero; tempGameInfo.opponentRank = standard ? Core.Game.MatchInfo.OpposingPlayer.StandardRank : Core.Game.MatchInfo.OpposingPlayer.WildRank; tempGameInfo.opponentLegendRank = standard ? Core.Game.MatchInfo.OpposingPlayer.StandardLegendRank : Core.Game.MatchInfo.OpposingPlayer.WildLegendRank; tempGameInfo.opponentCoin = Core.Game.Opponent.HasCoin; if (Core.Game.CurrentGameStats.Result == GameResult.Win) { tempGameInfo.playerWin = true; tempGameInfo.opponentWin = false; } else if (Core.Game.CurrentGameStats.Result == GameResult.Loss) { tempGameInfo.playerWin = false; tempGameInfo.opponentWin = true; } else if (Core.Game.CurrentGameStats.Result == GameResult.Draw) { tempGameInfo.playerWin = false; tempGameInfo.opponentWin = false; } //var ActivePlayerDeck = DeckList.Instance.ActiveDeck.Cards.Select(x => x.Id).ToArray(); List <string> playerCards; try { if (DeckList.Instance.ActiveDeck != null) { playerCards = DeckList.Instance.ActiveDeck.Cards.Where(x => x.Count == 2).Select(x => x.Id).ToList(); playerCards.AddRange(Core.Game.Player.PlayerCardList.Select(x => x.Id).ToList()); tempGameInfo.playerCards = String.Join(",", playerCards.Select(x => x.ToString()).ToArray()); } } catch { } var opponentCards = Core.Game.Opponent.OpponentCardList.Where(x => !x.IsCreated).Select(x => x.Id).ToList(); //opponentCards.AddRange(Core.Game.Opponent.OpponentCardList.Where(x => !x.IsCreated).Select(x => x.Id).ToList()); tempGameInfo.opponentCards = String.Join(",", opponentCards.Select(x => x.ToString()).ToArray()); GameStats tempStats = new GameStats(); tempStats.gameInfo = tempGameInfo; tempStats.cardsPlayed.AddRange(_trackOpponentCards.Values.Where(x => x.cardId != "" && x.cardId != null).OrderBy(x => x.turn).ToList()); tempStats.cardsPlayed.AddRange(_trackPlayerCards.Values.Where(x => x.cardId != "" && x.cardId != null).OrderBy(x => x.turn).ToList()); //_cardsPlayed.Clear(); /* * foreach (CardInfo x in _trackOpponentCards.Values.Where(x => x.cardId != "" && x.cardId != null).OrderBy(x => x.turnCardPlayed).ToList()) * { * tempTrackCards.Add(new trackCards(x.cardId, )); * _cardsPlayed.Add(x.cardId, x.turnCardPlayed, x.created, x.turnInHand, x.mulligan, * x.turnCardDied, * Core.Game.MatchInfo.OpposingPlayer.StandardRank, Core.Game.MatchInfo.OpposingPlayer.StandardLegendRank, * Core.Game.MatchInfo.LocalPlayer.StandardRank, * Core.Game.MatchInfo.LocalPlayer.StandardLegendRank, Core.Game.MatchInfo.RankedSeasonId, * Database.GetCardFromId(x.cardId).Name, x.mana, x.manaoverload, "Opponent", x.createdBy); * } * * foreach (CardInfo x in _trackPlayerCards.Values.Where(x => x.cardId != "" && x.cardId != null).OrderBy(x => x.turnCardPlayed).ToList()) * { * _cardsPlayed.Add(x.cardId, x.turnCardPlayed, x.created, x.turnInHand, x.mulligan, * x.turnCardDied, * Core.Game.MatchInfo.OpposingPlayer.StandardRank, Core.Game.MatchInfo.OpposingPlayer.StandardLegendRank, Core.Game.MatchInfo.LocalPlayer.StandardRank, * Core.Game.MatchInfo.LocalPlayer.StandardLegendRank, Core.Game.MatchInfo.RankedSeasonId, * Database.GetCardFromId(x.cardId).Name, x.mana, x.manaoverload, "Player", x.createdBy); * } * * if (Core.Game.CurrentGameStats.Result == GameResult.Win) * _cardsPlayed.setPlayerWin(); * else if (Core.Game.CurrentGameStats.Result == GameResult.Loss) * _cardsPlayed.setOpponentWin(); */ tempStats.Save(); await tempStats.sendCardStats(); } catch (Exception ex) { MetaLog.Error(ex); } }
public void OpponentPlayToGraveyard(Card c) { MetaLog.Info("Turn " + _opponentTurnCount + ": Minion Dead - " + c.Name, "OpponentPlayToGraveyard"); }