Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
 public void OnUnload()
 {
     _MetaDetector.saveConfig();
     _MainWindow.Close();
     _MetaDetector = null;
     _MainWindow   = null;
     MetaLog.Info("Plugin Unload Successful");
 }
Exemplo n.º 7
0
        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();
                }
            }
        }
Exemplo n.º 9
0
        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");
            }
        }
Exemplo n.º 11
0
 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.");
            }
        }
Exemplo n.º 14
0
        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);
                }
            }
        }
Exemplo n.º 16
0
        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");
 }
Exemplo n.º 18
0
        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);
            }
        }
Exemplo n.º 19
0
 public void OpponentPlayToGraveyard(Card c)
 {
     MetaLog.Info("Turn " + _opponentTurnCount + ": Minion Dead - " + c.Name, "OpponentPlayToGraveyard");
 }