Esempio n. 1
0
 public bool GetPlayerAtTime(string _Name, WowRealm _Realm, DateTime _DateTime, out Player _RetPlayer)
 {
     try
     {
         if (HaveValidHistory() == false)
         {
             Logger.ConsoleWriteLine("Player \"" + _Name + "\" did not have Valid History!", ConsoleColor.Red);
             _RetPlayer = null;
             return(false);
         }
         _RetPlayer = new Player(_Name, _Realm
                                 , GetCharacterItemAtTime(_DateTime)
                                 , GetGuildItemAtTime(_DateTime)
                                 , GetHonorItemAtTime(_DateTime)
                                 , GetGearItemAtTime(_DateTime)
                                 , GetArenaItemAtTime(_DateTime)
                                 , GetTalentsItemAtTime(_DateTime));
         return(true);
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
         _RetPlayer = null;
         return(false);
     }
 }
Esempio n. 2
0
 public Player(string _Name, WowRealm _Realm, CharacterDataHistoryItem _Character, GuildDataHistoryItem _Guild, HonorDataHistoryItem _Honor, GearDataHistoryItem _Gear, ArenaDataHistoryItem _Arena, TalentsDataHistoryItem _Talents)
 {
     Name             = _Name;
     Realm            = _Realm;
     Character        = _Character.Data;
     Guild            = _Guild.Data;
     Honor            = _Honor.Data;
     Gear             = _Gear.Data;
     Arena            = _Arena.Data;
     TalentPointsData = _Talents.Data;
     Uploader         = _Character.Uploader;
     if (_Guild.Uploader.GetTime() > Uploader.GetTime())
     {
         Uploader = _Guild.Uploader;
     }
     if (_Honor.Uploader.GetTime() > Uploader.GetTime())
     {
         Uploader = _Honor.Uploader;
     }
     if (_Gear.Uploader.GetTime() > Uploader.GetTime())
     {
         Uploader = _Gear.Uploader;
     }
     if (_Arena.Uploader.GetTime() > Uploader.GetTime())
     {
         Uploader = _Arena.Uploader;
     }
     if (_Talents.Uploader.GetTime() > Uploader.GetTime())
     {
         Uploader = _Talents.Uploader;
     }
     LastSeen = Uploader.GetTime();
 }
Esempio n. 3
0
        public void InitializeItemInfo(int _ItemID, WowRealm _Realm, ItemInfoDownloader _ItemInfoDownloader)
        {
            uint dictionaryID = GetDictionaryItemID(_ItemID, _Realm);

            if (m_Items.ContainsKey(dictionaryID) == true)
            {
                throw new Exception("(InitializeItemInfo) Could not Initialize ItemInfo for dictionaryID(" + dictionaryID.ToString() + "), it already exists");
            }

            ItemInfo itemInfo = null;

            if (_Realm == WowRealm.Emerald_Dream)
            {
                itemInfo = ItemInfo.GenerateVanilla(_ItemID, _ItemInfoDownloader);
            }
            else if (_Realm == WowRealm.Archangel || _Realm == WowRealm.WarsongTBC)
            {
                itemInfo = ItemInfo.GenerateTBC(_ItemID, _ItemInfoDownloader);
            }
            if (itemInfo != null)
            {
                m_Items.Add(dictionaryID, itemInfo);
            }
            else
            {
                throw new Exception("(InitializeItemInfo) Could not Initialize ItemInfo for dictionaryID(" + dictionaryID.ToString() + "), ItemInfo generation failed");
            }
        }
Esempio n. 4
0
 public RealmDatabase GetRealm(WowRealm _Realm)
 {
     if (m_Realms.ContainsKey(_Realm) == false)
     {
         m_Realms.Add(_Realm, new RealmDatabase(_Realm));
     }
     return(m_Realms[_Realm]);
 }
Esempio n. 5
0
        public WowRealm GetRealmStatus(string locale = "us")
        {
            string   localeName = GetRegionFromString(locale);
            WowRealm w          = new WowRealm();
            string   url        = $"/realm/status?";

            w = JsonConvert.DeserializeObject <WowRealm>(GetAPIRequest(url, localeName, locale));
            return(w);
        }
Esempio n. 6
0
        public WowRealm GetRealmStatus(string locale = "us")
        {
            string   localeName = GetRegionFromString(locale);
            WowRealm w          = new WowRealm();
            string   url        = $"/data/wow/realm/index?namespace=dynamic-{locale}";

            w = JsonConvert.DeserializeObject <WowRealm>(GetAPIRequest(url, localeName, locale));
            return(w);
        }
Esempio n. 7
0
 public Player(SerializationInfo _Info, StreamingContext _Context)
 {
     Name      = _Info.GetString("Name");
     Realm     = (WowRealm)_Info.GetInt32("Realm");
     Character = (CharacterData)_Info.GetValue("Character", typeof(CharacterData));
     Guild     = (GuildData)_Info.GetValue("Guild", typeof(GuildData));
     Honor     = (HonorData)_Info.GetValue("Honor", typeof(HonorData));
     Gear      = (GearData)_Info.GetValue("Gear", typeof(GearData));
     LastSeen  = (DateTime)_Info.GetValue("LastSeen", typeof(DateTime));
     Uploader  = (UploadID)_Info.GetValue("Uploader", typeof(UploadID));
 }
Esempio n. 8
0
        private uint GetDictionaryItemID(uint _ItemID, WowRealm _Realm)
        {
            if (_ItemID > 0xFFFFFF)
            {
                throw new Exception("(GetDictionaryItemID) ItemID: " + _ItemID.ToString() + " is too large");
            }

            switch (_Realm)
            {
            case WowRealm.Unknown:
                throw new Exception("(GetDictionaryItemID) Could not get dictionary ItemID for Unknown Realm");

            case WowRealm.Emerald_Dream:
                return((1U << 24) + _ItemID);

            case WowRealm.Al_Akir:
                return((1U << 24) + _ItemID);

            case WowRealm.Warsong:
                return((1U << 24) + _ItemID);

            case WowRealm.All:
                return(uint.MaxValue);

            case WowRealm.Archangel:
                return((0x10U << 24) + _ItemID);

            case WowRealm.Valkyrie:
                return((2U << 24) + _ItemID);

            case WowRealm.Rebirth:
                return((3U << 24) + _ItemID);

            case WowRealm.VanillaGaming:
                return((4U << 24) + _ItemID);

            case WowRealm.Nostalrius:
            case WowRealm.NostalriusPVE:
                return((5U << 24) + _ItemID);

            case WowRealm.Kronos:
                return((6U << 24) + _ItemID);

            case WowRealm.NostalGeek:
                return((7U << 24) + _ItemID);

            case WowRealm.Nefarian:
                return((8U << 24) + _ItemID);

            default:
                break;
            }
            throw new Exception("(GetDictionaryItemID) Could not get dictionary ItemID for Realm: " + _Realm.ToString());
        }
Esempio n. 9
0
 public static DateTime CalculateLastRankUpdadeDateUTC(WowRealm _Realm, DateTime?_NowUTC = null)
 {
     if (_Realm == WowRealm.Nostalrius || _Realm == WowRealm.NostalriusPVE)
     {
         return(CalculateLastRankUpdadeDateUTC_WednesdayMidday(_NowUTC));
     }
     else
     {
         return(CalculateLastRankUpdadeDateUTC_Sunday(_NowUTC));
     }
 }
Esempio n. 10
0
 public void LoadRealmDatabase(string _RootPath, WowRealm _Realm, DateTime?_HistoryEarliestTime = null)
 {
     try
     {
         GetRealm(_Realm).LoadDatabase(_RootPath + _Realm.ToString() + "\\", _HistoryEarliestTime);
         m_NeedCleanup = true;
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
 }
Esempio n. 11
0
        public static string GetRealmPreString(WowRealm _Realm)
        {
            string realm = "" + (int)_Realm;

            if (realm.Length > 1)
            {
                if ((int)_Realm > 99)
                {
                    throw new Exception("ERROR, REALM WAS INTENDED TO NEVER BE BIGGER THAN VALUE 99");
                }
                realm = "R" + (int)_Realm;
            }
            return(realm);
        }
Esempio n. 12
0
        public ItemInfo GetItemInfo(int _ItemID, WowRealm _Realm)
        {
            uint     dictionaryID = GetDictionaryItemID(_ItemID, _Realm);
            ItemInfo itemInfo     = null;

            if (dictionaryID == uint.MaxValue || m_Items.TryGetValue(dictionaryID, out itemInfo) == false)
            {
                if (m_Items.TryGetValue(GetDictionaryItemID(_ItemID, WowRealm.Emerald_Dream), out itemInfo) == true)
                {
                    return(itemInfo);
                }
                return(null);
            }
            return(itemInfo);
        }
Esempio n. 13
0
        public WowRealm GetRealmStatus(string locale, string region)
        {
            string localeName = string.Empty;

            if (locale.Length == 5)
            {
                localeName = GetRegionFromString(locale.Substring(3).ToLower());
            }
            else if (locale.Length == 2)
            {
                localeName = GetRegionFromString(locale);
            }

            WowRealm w   = new WowRealm();
            string   url = $"/realm/status?";

            w = JsonConvert.DeserializeObject <WowRealm>(GetAPIRequest(url, locale: localeName, region: region));
            return(w);
        }
Esempio n. 14
0
 public static RankUpdateDayType GetRankUpdadeDayType(WowRealm _Realm)
 {
     if (_Realm == WowRealm.Kronos || _Realm == WowRealm.KronosII || _Realm == WowRealm.KronosIII)
     {
         return(RankUpdateDayType.Wednesday_Morning);
     }
     else if (_Realm == WowRealm.Nostalrius ||
              _Realm == WowRealm.NostalriusPVE ||
              _Realm == WowRealm.Elysium2 ||
              _Realm == WowRealm.Zeth_Kur ||
              (int)_Realm >= (int)WowRealm.Northdale //Wednesday Midday is the new default for standings on new realms added later after Northdale
              )
     {
         return(RankUpdateDayType.Wednesday_Midday);
     }
     else //Sunday Midnight is the old default setting
     {
         return(RankUpdateDayType.Sunday_Midnight);
     }
 }
Esempio n. 15
0
        public static WowVersionEnum GetWowVersion(WowRealm _Realm)
        {
            if (_Realm == WowRealm.Emerald_Dream || _Realm == WowRealm.Warsong || _Realm == WowRealm.Al_Akir ||
                _Realm == WowRealm.Rebirth || _Realm == WowRealm.Valkyrie || _Realm == WowRealm.VanillaGaming || _Realm == WowRealm.Test_Server || _Realm == WowRealm.Unknown ||
                _Realm == WowRealm.Nostalrius ||
                _Realm == WowRealm.NostalriusPVE ||
                _Realm == WowRealm.Kronos ||
                _Realm == WowRealm.NostalGeek ||
                _Realm == WowRealm.Nefarian)
            {
                return(WowVersionEnum.Vanilla);
            }
            else if (_Realm == WowRealm.Archangel)
            {
                return(WowVersionEnum.TBC);
            }

            Logger.ConsoleWriteLine("Error, WoW version was not specified for Realm: \"" + _Realm + "\"", ConsoleColor.Red);
            throw new Exception("Error, WoW version was not specified for Realm: \"" + _Realm + "\"");
        }
Esempio n. 16
0
        public static DateTime CalculateLastRankUpdadeDateUTC(WowRealm _Realm, DateTime?_NowUTC = null)
        {
            var updateDayType = GetRankUpdadeDayType(_Realm);

            if (updateDayType == RankUpdateDayType.Wednesday_Morning)
            {
                return(CalculateLastRankUpdadeDateUTC_WednesdayMorning(_NowUTC));
            }
            else if (updateDayType == RankUpdateDayType.Wednesday_Midday)
            {
                return(CalculateLastRankUpdadeDateUTC_WednesdayMidday(_NowUTC));
            }
            else if (updateDayType == RankUpdateDayType.Sunday_Midnight)
            {
                return(CalculateLastRankUpdadeDateUTC_Sunday(_NowUTC));
            }
            else
            {
                return(CalculateLastRankUpdadeDateUTC_Sunday(_NowUTC));
            }
        }
Esempio n. 17
0
        public static WowVersionEnum GetWowVersion(WowRealm _Realm, bool _IgnoreUnknownError = false)
        {
            if (_Realm == WowRealm.Emerald_Dream || _Realm == WowRealm.Warsong || _Realm == WowRealm.Al_Akir ||
                _Realm == WowRealm.Rebirth || _Realm == WowRealm.Valkyrie || _Realm == WowRealm.VanillaGaming || _Realm == WowRealm.Test_Server || _Realm == WowRealm.Unknown ||
                _Realm == WowRealm.Nostalrius ||
                _Realm == WowRealm.NostalriusPVE ||
                _Realm == WowRealm.Kronos ||
                _Realm == WowRealm.KronosII ||
                _Realm == WowRealm.Elysium ||
                _Realm == WowRealm.NostalGeek ||
                _Realm == WowRealm.Nefarian ||
                _Realm == WowRealm.Warsong2 ||
                _Realm == WowRealm.Elysium2 ||
                _Realm == WowRealm.Zeth_Kur ||
                _Realm == WowRealm.Nemesis ||
                _Realm == WowRealm.Nostralia ||
                _Realm == WowRealm.Firemaw ||
                _Realm == WowRealm.Nighthaven ||
                _Realm == WowRealm.Northdale ||
                _Realm == WowRealm.KronosIII
                )
            {
                return(WowVersionEnum.Vanilla);
            }
            else if (_Realm == WowRealm.Archangel || _Realm == WowRealm.WarsongTBC || _Realm == WowRealm.Vengeance_Wildhammer || _Realm == WowRealm.ExcaliburTBC || _Realm == WowRealm.L4G_Hellfire || _Realm == WowRealm.Vengeance_Stonetalon || _Realm == WowRealm.HellGround || _Realm == WowRealm.Hellfire2 ||
                     _Realm == WowRealm.Outland || _Realm == WowRealm.Medivh || _Realm == WowRealm.Felmyst ||
                     _Realm == WowRealm.Ares
                     )
            {
                return(WowVersionEnum.TBC);
            }

            if (_IgnoreUnknownError == true)
            {
                return(WowVersionEnum.Unknown);
            }

            Logger.ConsoleWriteLine("Error, WoW version was not specified for Realm: \"" + _Realm + "\"", ConsoleColor.Red);
            throw new Exception("Error, WoW version was not specified for Realm: \"" + _Realm + "\"");
        }
Esempio n. 18
0
        public static WowVersionEnum GetWowVersion(WowRealm _Realm)
        {
            if (_Realm == WowRealm.Emerald_Dream || _Realm == WowRealm.Warsong || _Realm == WowRealm.Al_Akir ||
                _Realm == WowRealm.Rebirth || _Realm == WowRealm.Valkyrie || _Realm == WowRealm.VanillaGaming || _Realm == WowRealm.Test_Server || _Realm == WowRealm.Unknown ||
                _Realm == WowRealm.Nostalrius ||
                _Realm == WowRealm.NostalriusPVE ||
                _Realm == WowRealm.Kronos ||
                _Realm == WowRealm.KronosII ||
                _Realm == WowRealm.Elysium ||
                _Realm == WowRealm.NostalGeek ||
                _Realm == WowRealm.Nefarian ||
                _Realm == WowRealm.Warsong2 ||
                _Realm == WowRealm.Elysium2)
            {
                return(WowVersionEnum.Vanilla);
            }
            else if (_Realm == WowRealm.Archangel || _Realm == WowRealm.WarsongTBC || _Realm == WowRealm.Vengeance_Wildhammer || _Realm == WowRealm.ExcaliburTBC || _Realm == WowRealm.L4G_Hellfire || _Realm == WowRealm.Vengeance_Stonetalon)
            {
                return(WowVersionEnum.TBC);
            }

            Logger.ConsoleWriteLine("Error, WoW version was not specified for Realm: \"" + _Realm + "\"", ConsoleColor.Red);
            throw new Exception("Error, WoW version was not specified for Realm: \"" + _Realm + "\"");
        }
Esempio n. 19
0
 public bool GetPlayerAtTime(string _Name, WowRealm _Realm, DateTime _DateTime, out Player _RetPlayer)
 {
     try
     {
         if (HaveValidHistory() == false)
         {
             _RetPlayer = null;
             return(false);
         }
         _RetPlayer = new Player(_Name, _Realm
                                 , GetCharacterItemAtTime(_DateTime)
                                 , GetGuildItemAtTime(_DateTime)
                                 , GetHonorItemAtTime(_DateTime)
                                 , GetGearItemAtTime(_DateTime)
                                 , GetArenaItemAtTime(_DateTime)
                                 , GetTalentsItemAtTime(_DateTime));
         return(true);
     }
     catch (Exception)
     {
         _RetPlayer = null;
         return(false);
     }
 }
Esempio n. 20
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            bool debugMode = false;

            if (System.IO.Directory.Exists(g_RPPDBFolder) == false)
            {
                g_RPPDBFolder = g_RPPDBFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);
                g_RDDBFolder  = g_RDDBFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);
                AddonDatabaseService.g_AddonUploadDataFolder        = AddonDatabaseService.g_AddonUploadDataFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);
                AddonDatabaseService.g_AddonUploadStatsFolder       = AddonDatabaseService.g_AddonUploadStatsFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);
                RPPDatabaseHandler.g_AddonContributionsBackupFolder = RPPDatabaseHandler.g_AddonContributionsBackupFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);

                RDDatabaseHandler.g_AddonContributionsBackupFolder = RDDatabaseHandler.g_AddonContributionsBackupFolder.Replace(VF_RealmPlayersDatabase.Utility.DefaultServerLocation, VF_RealmPlayersDatabase.Utility.DefaultDebugLocation);
                debugMode = true;
            }
            AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;

            VF_WoWLauncher.ConsoleUtility.CreateConsole();

            /*Some Testing*/
#if false
            WowRealm[] ALL_REALMS = new WowRealm[] {
                WowRealm.Kronos,
                WowRealm.NostalGeek,
                WowRealm.Al_Akir,
                WowRealm.Valkyrie,
                WowRealm.VanillaGaming,
                WowRealm.Nefarian,
                WowRealm.Rebirth,
                WowRealm.Archangel,
                WowRealm.Nostalrius,
                WowRealm.NostalriusPVE,
                WowRealm.Emerald_Dream,
                WowRealm.Warsong,
                WowRealm.WarsongTBC
            };

            SQLDatabaseMigration.Migrate(SQLDatabaseMigration.MigrationChoice.TestOnly, ALL_REALMS);
#endif
            /*Some Testing*/

            //if (debugMode == false)
            {
                Console.WriteLine("Waiting for ContributorDB to load");
                ContributorDB.Initialize(debugMode);
                while (ContributorDB.GetMongoDB() == null)
                {
                    ContributorDB.Initialize(debugMode);
                    System.Threading.Thread.Sleep(100);
                    Console.Write(".");
                }
                Console.WriteLine("ContributorDB loaded!");
            }

            //VF_RealmPlayersDatabase.Deprecated.ContributorHandler.Initialize(g_RPPDBFolder + "Database\\");
            g_RPPDatabaseHandler = new RPPDatabaseHandler(g_RPPDBFolder);
            g_RDDatabaseHandler  = new RDDatabaseHandler(g_RDDBFolder, g_RPPDatabaseHandler);
            AddonDatabaseService.HandleUnhandledFiles("VF_RealmPlayers");
            AddonDatabaseService.HandleUnhandledFiles("VF_RaidDamage");
            AddonDatabaseService.HandleUnhandledFiles("VF_RealmPlayersTBC");
            AddonDatabaseService.HandleUnhandledFiles("VF_RaidStatsTBC");
            try
            {
                Application.Run(new MainWindow());
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
                g_RDDatabaseHandler.Shutdown();
                g_RPPDatabaseHandler.Shutdown();
            }
        }
Esempio n. 21
0
 public RealmDatabase GetRealmDB(WowRealm _Realm)
 {
     return(m_Database.GetRealm(_Realm));
 }
Esempio n. 22
0
        public bool ReloadRealmDB(WowRealm _Realm, string _RootPath, bool _PurgeRealmDB = true, object _SynchronizationLockObject = null, DateTime?_HistoryEarliestTime = null)
        {
            if (_SynchronizationLockObject == null)
            {
                _SynchronizationLockObject = new object();
            }

            try
            {
                if (m_Realms.ContainsKey(_Realm) == true)
                {
                    RealmDatabase oldRealm;
                    lock (_SynchronizationLockObject)
                    {
                        oldRealm = m_Realms[_Realm];
                    }
                    if (oldRealm.IsDBFileUpdated(_RootPath + _Realm.ToString() + "\\") == true)
                    {
                        var reloadedRealm = new RealmDatabase(_Realm);
                        reloadedRealm.LoadDatabase(_RootPath + _Realm.ToString() + "\\", _HistoryEarliestTime);
                        if (_PurgeRealmDB == true)
                        {
                            var purgeTask = new System.Threading.Tasks.Task(() =>
                            {
                                reloadedRealm.RemoveUnknowns();
                                reloadedRealm.RemoveGMs();
                                GC.Collect();
                            });
                            purgeTask.Start();
                            purgeTask.Wait(300 * 1000);//300 sekunder(5 minuter)
                        }
                        reloadedRealm.WaitForLoad(RealmDatabase.LoadStatus.EverythingLoaded);
                        if (reloadedRealm.IsLoadComplete() == false)
                        {
                            Logger.ConsoleWriteLine("Failed to reload database " + _Realm + ", it took too long", ConsoleColor.Red);
                            return(false);
                        }
                        lock (_SynchronizationLockObject)
                        {
                            m_Realms[_Realm] = reloadedRealm;
                        }
                        GC.Collect();
                        return(true);
                    }
                }
                else
                {
                    Logger.ConsoleWriteLine("Realm was not loaded when requesting reload, this is unoptimal solution due to unnecessary locking for a long time!", ConsoleColor.Red);
                    try
                    {
                        lock (_SynchronizationLockObject)
                        {
                            LoadRealmDatabase(_RootPath, _Realm, _HistoryEarliestTime);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex);
                    }
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            return(false);
        }
Esempio n. 23
0
 public RealmDatabase(WowRealm _Realm)
 {
     Realm      = _Realm;
     WowVersion = StaticValues.GetWowVersion(_Realm);
     Updated    = false;
 }
Esempio n. 24
0
        public void PurgeGearContribution(WowRealm _Realm, string _Character, UploadID _UploadID)
        {
            RealmDatabase realmDB = m_Realms[_Realm];

            realmDB.PurgeGearContribution(_Character, _UploadID);
        }
Esempio n. 25
0
        public bool AddContribution(RPPContribution _Contribution)
        {
            int loggedExceptions = 0;

            try
            {
                SavedVariablesParser.Document doc = new SavedVariablesParser.Document(_Contribution.GetFilename());
                var xmlDoc = doc.ConvertToXMLDocument();

                WowVersionEnum wowVersion = WowVersionEnum.Unknown;
                try
                {
                    string addonVersion = XMLUtility.GetChildValue(xmlDoc.DocumentElement, "VF_RealmPlayersVersion", "0.0");
                    if (addonVersion.Split('.').Length == 2) //VF_RealmPlayers
                    {
                        if (Utility.ParseDouble(addonVersion) <= 1.58)
                        {
                            return(false);
                        }
                        wowVersion = WowVersionEnum.Vanilla;
                    }
                    else //VF_RealmPlayersTBC
                    {
                        wowVersion = WowVersionEnum.TBC;
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
                List <VF.SQLUploadID> uploadIDs = new List <VF.SQLUploadID>();
                var dataNode = XMLUtility.GetChild(xmlDoc.DocumentElement, "VF_RealmPlayersData");
                int wowVersionWrongGuessCount = 0;
                foreach (System.Xml.XmlNode playerNode in dataNode.ChildNodes)
                {
                    try
                    {
                        if (XMLUtility.GetChild(playerNode, "PlayerData") != null)
                        {
                            string   realmStr = PlayerData.DataParser.ParseRealm(playerNode);
                            WowRealm realm    = StaticValues.ConvertRealm(realmStr);
                            if ((StaticValues.GetWowVersion(realm) != wowVersion))
                            {
                                ++wowVersionWrongGuessCount;
                            }

                            if (realm == WowRealm.Unknown || m_Realms.ContainsKey(realm) == false)
                            {
                                Logger.ConsoleWriteLine("RealmStr: \"" + realmStr + "\" was not recognized as a realm");
                            }
                            else
                            {
                                Func <int, VF.SQLUploadID> getUploadID = (int _Index) =>
                                {
                                    while (uploadIDs.Count <= _Index)
                                    {
                                        using (VF.SQLComm comm = new VF.SQLComm())
                                        {
                                            var uploadID = comm.GenerateNewUploadEntry(_Contribution.GetContributor(), DateTime.UtcNow);
                                            uploadIDs.Add(uploadID);
                                        }
                                    }
                                    return(uploadIDs[_Index]);
                                };
                                RealmDatabase realmDB = m_Realms[realm];
                                realmDB.UpdatePlayer(playerNode, _Contribution.GetContributor(), getUploadID);
                            }
                        }
                    }
                    catch (Npgsql.NpgsqlException ex)
                    {
                        throw ex;
                    }
                    catch (Exception ex)
                    {
                        if (loggedExceptions < 5)
                        {
                            Logger.LogException(ex);
                        }
                        ++loggedExceptions;
                    }
                }
                if (wowVersionWrongGuessCount > 0)
                {
                    Logger.ConsoleWriteLine("RealmPlayers WoWversion guess was wrong " + wowVersionWrongGuessCount + " times!!!", ConsoleColor.Red);
                }
                Logger.ConsoleWriteLine(_Contribution.GetContributor().GetFilename() + " just updated database successfully!");
                return(true);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            return(false);
        }
Esempio n. 26
0
 public Player(string _Name, WowRealm _Realm)
 {
     Name     = _Name;
     Realm    = _Realm;
     LastSeen = DateTime.MinValue;
 }
Esempio n. 27
0
 private uint GetDictionaryItemID(int _ItemID, WowRealm _Realm)
 {
     return(GetDictionaryItemID((uint)_ItemID, _Realm));
 }
Esempio n. 28
0
        public void AddContribution(RPPContribution _Contribution)
        {
            int loggedExceptions = 0;

            try
            {
                SavedVariablesParser.Document doc = new SavedVariablesParser.Document(_Contribution.GetFilename());
                var xmlDoc = doc.ConvertToXMLDocument();

                WowVersionEnum wowVersion = WowVersionEnum.Unknown;
                try
                {
                    string addonVersion = XMLUtility.GetChildValue(xmlDoc.DocumentElement, "VF_RealmPlayersVersion", "0.0");
                    if (addonVersion.Split('.').Length == 2) //VF_RealmPlayers
                    {
                        if (Utility.ParseDouble(addonVersion) <= 1.58)
                        {
                            return;
                        }
                        wowVersion = WowVersionEnum.Vanilla;
                    }
                    else //VF_RealmPlayersTBC
                    {
                        wowVersion = WowVersionEnum.TBC;
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
                var dataNode = XMLUtility.GetChild(xmlDoc.DocumentElement, "VF_RealmPlayersData");
                foreach (System.Xml.XmlNode playerNode in dataNode.ChildNodes)
                {
                    try
                    {
                        if (XMLUtility.GetChild(playerNode, "PlayerData") != null)
                        {
                            string   realmStr = PlayerData.DataParser.ParseRealm(playerNode);
                            WowRealm realm    = StaticValues.ConvertRealm(realmStr);
                            if (realm == WowRealm.Archangel || wowVersion == WowVersionEnum.TBC)
                            {
                                if (realm != WowRealm.Archangel || wowVersion != WowVersionEnum.TBC)
                                {
                                    Logger.ConsoleWriteLine("RealmPlayers WoWversion guess was wrong!!!", ConsoleColor.Red);
                                }
                            }

                            if (realm == WowRealm.Unknown || m_Realms.ContainsKey(realm) == false)
                            {
                                Logger.ConsoleWriteLine("RealmStr: \"" + realmStr + "\" was not recognized as a realm");
                            }
                            else
                            {
                                RealmDatabase realmDB = m_Realms[realm];
                                realmDB.UpdatePlayer(playerNode, _Contribution.GetContributor());
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (loggedExceptions < 5)
                        {
                            Logger.LogException(ex);
                        }
                        ++loggedExceptions;
                    }
                }
                Logger.ConsoleWriteLine(_Contribution.GetContributor().GetFilename() + " just updated database successfully!");
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
        }
Esempio n. 29
0
        private uint GetDictionaryItemID(uint _ItemID, WowRealm _Realm)
        {
            if (_ItemID > 0xFFFFFF)
            {
                throw new Exception("(GetDictionaryItemID) ItemID: " + _ItemID.ToString() + " is too large");
            }

            switch (_Realm)
            {
            case WowRealm.Unknown:
                throw new Exception("(GetDictionaryItemID) Could not get dictionary ItemID for Unknown Realm");

            case WowRealm.Emerald_Dream:
                return((1U << 24) + _ItemID);

            case WowRealm.Al_Akir:
                return((1U << 24) + _ItemID);

            case WowRealm.Warsong:
            case WowRealm.Warsong2:
            case WowRealm.Nemesis:
                return((1U << 24) + _ItemID);

            case WowRealm.All:
                return(uint.MaxValue);

            case WowRealm.Archangel:
            case WowRealm.WarsongTBC:
                return((0x10U << 24) + _ItemID);

            case WowRealm.Valkyrie:
            case WowRealm.Elysium:
            case WowRealm.Elysium2:
            case WowRealm.Zeth_Kur:
                return((2U << 24) + _ItemID);

            case WowRealm.Rebirth:
                return((3U << 24) + _ItemID);

            case WowRealm.VanillaGaming:
                return((4U << 24) + _ItemID);

            case WowRealm.Nostalrius:
            case WowRealm.NostalriusPVE:
            case WowRealm.Nostralia:
            case WowRealm.Firemaw:     //Should have own ID
                return((5U << 24) + _ItemID);

            case WowRealm.Kronos:
            case WowRealm.KronosII:
                return((6U << 24) + _ItemID);

            case WowRealm.NostalGeek:
                return((7U << 24) + _ItemID);

            case WowRealm.Nefarian:
                return((8U << 24) + _ItemID);

            case WowRealm.Vengeance_Wildhammer:
            case WowRealm.Vengeance_Stonetalon:
                return((0x11U << 24) + _ItemID);

            case WowRealm.ExcaliburTBC:
                return((0x12U << 24) + _ItemID);

            case WowRealm.L4G_Hellfire:
            case WowRealm.Hellfire2:
            case WowRealm.HellGround: //Should have own ID
            case WowRealm.Felmyst:    //Should have own ID
            case WowRealm.Outland:    //Should have own ID
            case WowRealm.Medivh:     //Should have own ID
            case WowRealm.Ares:       //Should have own ID
                return((0x13U << 24) + _ItemID);

            default:
                if (StaticValues.GetWowVersion(_Realm) == WowVersionEnum.Vanilla)    //Should have own ID
                {
                    return((5U << 24) + _ItemID);
                }
                else if (StaticValues.GetWowVersion(_Realm) == WowVersionEnum.TBC)    //Should have own ID
                {
                    return((0x13U << 24) + _ItemID);
                }

                break;
            }
            throw new Exception("(GetDictionaryItemID) Could not get dictionary ItemID for Realm: " + _Realm.ToString());
        }
Esempio n. 30
0
        public bool AddContribution(RPPContribution _Contribution)
        {
            int loggedExceptions = 0;

            try
            {
                SavedVariablesParser.Document doc = new SavedVariablesParser.Document(_Contribution.GetFilename());
                var xmlDoc = doc.ConvertToXMLDocument();

                WowVersionEnum wowVersion = WowVersionEnum.Unknown;
                try
                {
                    string addonVersion = XMLUtility.GetChildValue(xmlDoc.DocumentElement, "VF_RealmPlayersVersion", "0.0");
                    if (addonVersion.Split('.').Length == 2) //VF_RealmPlayers
                    {
                        if (Utility.ParseDouble(addonVersion) <= 1.58)
                        {
                            return(false);
                        }
                        wowVersion = WowVersionEnum.Vanilla;
                    }
                    else //VF_RealmPlayersTBC
                    {
                        wowVersion = WowVersionEnum.TBC;
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
#if UPDATE_SQL_DB
                List <VF.SQLUploadID> uploadIDs = new List <VF.SQLUploadID>();
#endif
                var dataNode = XMLUtility.GetChild(xmlDoc.DocumentElement, "VF_RealmPlayersData");
                int wowVersionWrongGuessCount = 0;
                foreach (System.Xml.XmlNode playerNode in dataNode.ChildNodes)
                {
                    try
                    {
                        if (PlayerData.DataParser.ParsePlayerName(playerNode) == "OnlineData")
                        {
                            foreach (System.Xml.XmlNode onlineDataNode in playerNode.ChildNodes)
                            {
                                int loggedStrangeDataException = 0;

                                string   onlineData = onlineDataNode.Attributes["value"].Value;
                                var      dataParts  = onlineData.Split(new char[] { ';' }, 5);
                                string   realmStr   = dataParts[1];
                                WowRealm realm      = StaticValues.ConvertRealm(realmStr);
                                if (realm == WowRealm.Unknown)
                                {
                                    realmStr = realmStr.Substring(0, 1) + realmStr.Substring(2);
                                    realm    = StaticValues.ConvertRealm(realmStr);
                                }

                                string   dateTimeStartStr = dataParts[2];
                                string   dateTimeEndStr   = dataParts[3];
                                string[] playersDatas     = dataParts[4].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                DateTime dateTimeStart;
                                DateTime dateTimeEnd;
                                if (System.DateTime.TryParse(dateTimeStartStr, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal | System.Globalization.DateTimeStyles.AdjustToUniversal, out dateTimeStart) == true &&
                                    System.DateTime.TryParse(dateTimeEndStr, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal | System.Globalization.DateTimeStyles.AdjustToUniversal, out dateTimeEnd) == true)
                                {
                                    PlayersOnlineDB playersOnlineDB = m_Realms[realm].PlayersOnlineData;

                                    var onlineEntry = playersOnlineDB.GetOnlineEntry(dateTimeStart, dateTimeEnd);
                                    if (onlineEntry == null && (dateTimeEnd - dateTimeStart).TotalMinutes < 5)
                                    {
                                        //Widen the online-span to approx 5 minutes since we are creating a new entry anyways...
                                        double addMinutes = 5.0 - (dateTimeEnd - dateTimeStart).TotalMinutes;
                                        double halfMins   = addMinutes / 2;
                                        dateTimeStart = dateTimeStart.AddMinutes(-halfMins);
                                        dateTimeEnd   = dateTimeEnd.AddMinutes(halfMins);
                                    }
                                    onlineEntry = playersOnlineDB.CreateOnlineEntry(dateTimeStart, dateTimeEnd);

                                    foreach (var playerData in playersDatas)
                                    {
                                        var data = playerData.Split(':');
                                        if (data.Length == 6)
                                        {
                                            PlayersOnlineDB.OnlinePlayerEntry onlinePlayer = new PlayersOnlineDB.OnlinePlayerEntry();
                                            onlinePlayer.Name  = data[0];
                                            onlinePlayer.Race  = (PlayerRace)int.Parse(data[1]);
                                            onlinePlayer.Class = (PlayerClass)int.Parse(data[2]);
                                            onlinePlayer.Guild = data[3];
                                            onlinePlayer.Level = int.Parse(data[4]);
                                            onlinePlayer.Zone  = (WorldZone)int.Parse(data[5]);
                                            onlineEntry.AddOnlinePlayer(onlinePlayer);
                                        }
                                        else if (loggedStrangeDataException < 5)
                                        {
                                            Logger.ConsoleWriteLine("Strange data in OnlineData segment! \"" + playerData + "\"");
                                            ++loggedStrangeDataException;
                                        }
                                    }
                                    m_Realms[realm].Updated = true;
                                    Logger.ConsoleWriteLine(onlineEntry.OnlinePlayers.Count + " players online " + dateTimeStart.ToDateTimeStr());
                                }
                            }
                        }
                        else if (XMLUtility.GetChild(playerNode, "PlayerData") != null)
                        {
                            string   realmStr = PlayerData.DataParser.ParseRealm(playerNode);
                            WowRealm realm    = StaticValues.ConvertRealm(realmStr);
                            if (realm == WowRealm.Unknown)
                            {
                                realmStr = realmStr.Substring(0, 1) + realmStr.Substring(2);
                                realm    = StaticValues.ConvertRealm(realmStr);
                            }
                            if (StaticValues.DeadRealms.Contains(realm) == true ||
                                StaticValues.Disabled_UploadRealmNames.Contains(realmStr) == true)
                            {
                                Logger.ConsoleWriteLine("RealmStr: \"" + realmStr + "\" was recognized as a dead realm");
                                continue;
                            }
                            if ((StaticValues.GetWowVersion(realm) != wowVersion))
                            {
                                ++wowVersionWrongGuessCount;
                            }

                            if (realm == WowRealm.Unknown || m_Realms.ContainsKey(realm) == false)
                            {
                                Logger.ConsoleWriteLine("RealmStr: \"" + realmStr + "\" was not recognized as a realm");
                            }
                            else
                            {
#if UPDATE_SQL_DB
                                Func <int, VF.SQLUploadID> getUploadID = (int _Index) =>
                                {
                                    while (uploadIDs.Count <= _Index)
                                    {
                                        using (VF.SQLComm comm = new VF.SQLComm())
                                        {
                                            var uploadID = comm.GenerateNewUploadEntry(_Contribution.GetContributor(), DateTime.UtcNow);
                                            uploadIDs.Add(uploadID);
                                        }
                                    }
                                    return(uploadIDs[_Index]);
                                };
                                RealmDatabase realmDB = m_Realms[realm];
                                realmDB.UpdatePlayer(playerNode, _Contribution.GetContributor(), getUploadID);
#else
                                RealmDatabase realmDB = m_Realms[realm];
                                realmDB.UpdatePlayer(playerNode, _Contribution.GetContributor(), null);
#endif
                            }
                        }
                    }
                    catch (Npgsql.NpgsqlException ex)
                    {
                        throw ex;
                    }
                    catch (Exception ex)
                    {
                        if (loggedExceptions < 5)
                        {
                            Logger.LogException(ex);
                        }
                        ++loggedExceptions;
                    }
                }
                if (wowVersionWrongGuessCount > 0)
                {
                    Logger.ConsoleWriteLine("RealmPlayers WoWversion guess was wrong " + wowVersionWrongGuessCount + " times!!!", ConsoleColor.Red);
                }
                Logger.ConsoleWriteLine(_Contribution.GetContributor().GetFilename() + " just updated database successfully!");
                return(true);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            return(false);
        }