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); } }
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(); }
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"); } }
public RealmDatabase GetRealm(WowRealm _Realm) { if (m_Realms.ContainsKey(_Realm) == false) { m_Realms.Add(_Realm, new RealmDatabase(_Realm)); } return(m_Realms[_Realm]); }
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); }
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); }
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)); }
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()); }
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)); } }
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); } }
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); }
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); }
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); }
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); } }
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 + "\""); }
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)); } }
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 + "\""); }
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 + "\""); }
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); } }
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(); } }
public RealmDatabase GetRealmDB(WowRealm _Realm) { return(m_Database.GetRealm(_Realm)); }
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); }
public RealmDatabase(WowRealm _Realm) { Realm = _Realm; WowVersion = StaticValues.GetWowVersion(_Realm); Updated = false; }
public void PurgeGearContribution(WowRealm _Realm, string _Character, UploadID _UploadID) { RealmDatabase realmDB = m_Realms[_Realm]; realmDB.PurgeGearContribution(_Character, _UploadID); }
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); }
public Player(string _Name, WowRealm _Realm) { Name = _Name; Realm = _Realm; LastSeen = DateTime.MinValue; }
private uint GetDictionaryItemID(int _ItemID, WowRealm _Realm) { return(GetDictionaryItemID((uint)_ItemID, _Realm)); }
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); } }
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()); }
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); }