diff options
Diffstat (limited to 'src')
22 files changed, 157 insertions, 193 deletions
diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp index b6dc8c7bac4..7c41a5bed41 100644 --- a/src/server/collision/Management/VMapManager2.cpp +++ b/src/server/collision/Management/VMapManager2.cpp @@ -143,7 +143,7 @@ namespace VMAP bool VMapManager2::isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2) { - if (!isLineOfSightCalcEnabled() || sDisableMgr->IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS)) + if (!isLineOfSightCalcEnabled() || DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS)) return true; InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); @@ -166,7 +166,7 @@ namespace VMAP */ bool VMapManager2::getObjectHitPos(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2, float& rx, float &ry, float& rz, float modifyDist) { - if (isLineOfSightCalcEnabled() && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS)) + if (isLineOfSightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS)) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree != iInstanceMapTrees.end()) @@ -196,7 +196,7 @@ namespace VMAP float VMapManager2::getHeight(unsigned int mapId, float x, float y, float z, float maxSearchDist) { - if (isHeightCalcEnabled() && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_HEIGHT)) + if (isHeightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_HEIGHT)) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree != iInstanceMapTrees.end()) @@ -215,7 +215,7 @@ namespace VMAP bool VMapManager2::getAreaInfo(unsigned int mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const { - if (!sDisableMgr->IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_AREAFLAG)) + if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_AREAFLAG)) { InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree != iInstanceMapTrees.end()) @@ -233,7 +233,7 @@ namespace VMAP bool VMapManager2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type) const { - if (!sDisableMgr->IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LIQUIDSTATUS)) + if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LIQUIDSTATUS)) { InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree != iInstanceMapTrees.end()) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 3262af05f5f..037949c8d2e 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2133,7 +2133,7 @@ bool AchievementMgr::HasAchieved(AchievementEntry const* achievement) const bool AchievementMgr::CanUpdateCriteria(AchievementCriteriaEntry const* criteria, AchievementEntry const* achievement) { - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_ACHIEVEMENT_CRITERIA, criteria->ID, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_ACHIEVEMENT_CRITERIA, criteria->ID, NULL)) return false; if (achievement->mapID != -1 && GetPlayer()->GetMapId() != uint32(achievement->mapID)) @@ -2366,7 +2366,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() continue; } - if (!GetCriteriaDataSet(criteria) && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_ACHIEVEMENT_CRITERIA, entryId, NULL)) + if (!GetCriteriaDataSet(criteria) && !DisableMgr::IsDisabledFor(DISABLE_TYPE_ACHIEVEMENT_CRITERIA, entryId, NULL)) sLog->outErrorDb("Table `achievement_criteria_data` does not have expected data for criteria (Entry: %u Type: %u) for achievement %u.", criteria->ID, criteria->requiredType, criteria->referredAchievement); } diff --git a/src/server/game/Addons/AddonMgr.cpp b/src/server/game/Addons/AddonMgr.cpp index d892e64b316..70c72fba7e6 100755 --- a/src/server/game/Addons/AddonMgr.cpp +++ b/src/server/game/Addons/AddonMgr.cpp @@ -16,27 +16,31 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "DatabaseEnv.h" #include "AddonMgr.h" -#include "ObjectAccessor.h" -#include "Player.h" -#include "Util.h" -#include "SHA1.h" +#include "DatabaseEnv.h" +#include "Log.h" +#include "Timer.h" -AddonMgr::AddonMgr() +#include <list> + +namespace AddonMgr { -} -AddonMgr::~AddonMgr() +// Anonymous namespace ensures file scope of all the stuff inside it, even +// if you add something more to this namespace somewhere else. +namespace { + // List of saved addons (in DB). + typedef std::list<SavedAddon> SavedAddonsList; + + SavedAddonsList m_knownAddons; } -void AddonMgr::LoadFromDB() +void LoadFromDB() { uint32 oldMSTime = getMSTime(); QueryResult result = CharacterDatabase.Query("SELECT name, crc FROM addons"); - if (!result) { sLog->outString(">> Loaded 0 known addons. DB table `addons` is empty!"); @@ -53,8 +57,7 @@ void AddonMgr::LoadFromDB() std::string name = fields[0].GetString(); uint32 crc = fields[1].GetUInt32(); - SavedAddon addon(name, crc); - m_knownAddons.push_back(addon); + m_knownAddons.push_back(SavedAddon(name, crc)); ++count; } @@ -64,17 +67,16 @@ void AddonMgr::LoadFromDB() sLog->outString(); } -void AddonMgr::SaveAddon(AddonInfo const& addon) +void SaveAddon(AddonInfo const& addon) { std::string name = addon.Name; CharacterDatabase.EscapeString(name); CharacterDatabase.PExecute("INSERT INTO addons (name, crc) VALUES ('%s', %u)", name.c_str(), addon.CRC); - SavedAddon newAddon(addon.Name, addon.CRC); - m_knownAddons.push_back(newAddon); + m_knownAddons.push_back(SavedAddon(addon.Name, addon.CRC)); } -SavedAddon const* AddonMgr::GetAddonInfo(const std::string& name) const +SavedAddon const* GetAddonInfo(const std::string& name) { for (SavedAddonsList::const_iterator it = m_knownAddons.begin(); it != m_knownAddons.end(); ++it) { @@ -85,3 +87,5 @@ SavedAddon const* AddonMgr::GetAddonInfo(const std::string& name) const return NULL; } + +} // Namespace diff --git a/src/server/game/Addons/AddonMgr.h b/src/server/game/Addons/AddonMgr.h index 9d68d2277fb..72edc3d1f6f 100755 --- a/src/server/game/Addons/AddonMgr.h +++ b/src/server/game/Addons/AddonMgr.h @@ -19,13 +19,9 @@ #ifndef _ADDONMGR_H #define _ADDONMGR_H -#include "Common.h" -#include <ace/Singleton.h> - +#include "Define.h" #include <string> -class WorldSession; - struct AddonInfo { AddonInfo(const std::string& name, uint8 enabled, uint32 crc, uint8 state, bool crcOrPubKey) @@ -56,33 +52,14 @@ struct SavedAddon uint32 CRC; }; -// List of client addons (for WorldSession). -typedef std::list<AddonInfo> AddonsList; - -// List of saved addons (in DB). -typedef std::list<SavedAddon> SavedAddonsList; - #define STANDARD_ADDON_CRC 0x4c1c776d -class AddonMgr +namespace AddonMgr { - friend class ACE_Singleton<AddonMgr, ACE_Null_Mutex>; - AddonMgr(); - ~AddonMgr(); - - public: - - void LoadFromDB(); - void SaveAddon(AddonInfo const& addon); - - SavedAddon const* GetAddonInfo(const std::string& name) const; - - private: - - SavedAddonsList m_knownAddons; // Known addons. -}; - -#define sAddonMgr ACE_Singleton<AddonMgr, ACE_Null_Mutex>::instance() + void LoadFromDB(); + void SaveAddon(AddonInfo const& addon); + SavedAddon const* GetAddonInfo(const std::string& name); +} #endif diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 5e88ae1ff1d..ed5c5b206bc 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -124,8 +124,10 @@ class AuctionHouseObject class AuctionHouseMgr { friend class ACE_Singleton<AuctionHouseMgr, ACE_Null_Mutex>; - AuctionHouseMgr(); - ~AuctionHouseMgr(); + + private: + AuctionHouseMgr(); + ~AuctionHouseMgr(); public: diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 693f8ddae27..91f9e3cc960 100755 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -46,7 +46,7 @@ ArenaTeam::~ArenaTeam() { } -bool ArenaTeam::Create(uint32 captainGuid, uint8 type, std::string teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor) +bool ArenaTeam::Create(uint64 captainGuid, uint8 type, std::string teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor) { // Check if captain is present if (!ObjectAccessor::FindPlayer(captainGuid)) @@ -56,7 +56,6 @@ bool ArenaTeam::Create(uint32 captainGuid, uint8 type, std::string teamName, uin if (sArenaTeamMgr->GetArenaTeamByName(TeamName)) return false; - // Generate new arena team id TeamId = sArenaTeamMgr->GenerateArenaTeamId(); @@ -69,14 +68,13 @@ bool ArenaTeam::Create(uint32 captainGuid, uint8 type, std::string teamName, uin EmblemColor = emblemColor; BorderStyle = borderStyle; BorderColor = borderColor; - - + uint32 captainLowGuid = GUID_LOPART(captainGuid); // Save arena team to db PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_ARENA_TEAM); stmt->setUInt32(0, TeamId); stmt->setString(1, TeamName); - stmt->setUInt32(2, GUID_LOPART(CaptainGuid)); + stmt->setUInt32(2, captainLowGuid); stmt->setUInt8(3, Type); stmt->setUInt16(4, Stats.Rating); stmt->setUInt32(5, BackgroundColor); @@ -89,7 +87,7 @@ bool ArenaTeam::Create(uint32 captainGuid, uint8 type, std::string teamName, uin // Add captain as member AddMember(CaptainGuid); - sLog->outArena("New ArenaTeam created [Id: %u] [Type: %u] [Captain low GUID: %u]", GetId(), GetType(), GUID_LOPART(CaptainGuid)); + sLog->outArena("New ArenaTeam created [Id: %u] [Type: %u] [Captain low GUID: %u]", GetId(), GetType(), captainLowGuid); return true; } @@ -239,13 +237,13 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result) break; ArenaTeamMember newMember; - newMember.Guid = MAKE_NEW_GUID(fields[1].GetUInt32(), 0, HIGHGUID_PLAYER); + newMember.Guid = MAKE_NEW_GUID(fields[1].GetUInt32(), 0, HIGHGUID_PLAYER); newMember.WeekGames = fields[2].GetUInt16(); newMember.WeekWins = fields[3].GetUInt16(); newMember.SeasonGames = fields[4].GetUInt16(); newMember.SeasonWins = fields[5].GetUInt16(); - newMember.Name = fields[6].GetString(); - newMember.Class = fields[7].GetUInt8(); + newMember.Name = fields[6].GetString(); + newMember.Class = fields[7].GetUInt8(); newMember.PersonalRating = fields[8].GetUInt16(); newMember.MatchMakerRating = fields[9].GetUInt16() > 0 ? fields[9].GetUInt16() : 1500; @@ -293,7 +291,7 @@ void ArenaTeam::SetCaptain(uint64 guid) CharacterDatabase.Execute(stmt); // Enable remove/promote buttons - Player *newCaptain = ObjectAccessor::FindPlayer(guid); + Player* newCaptain = ObjectAccessor::FindPlayer(guid); if (newCaptain) { newCaptain->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_MEMBER, 0); @@ -366,7 +364,7 @@ void ArenaTeam::Disband(WorldSession* session) void ArenaTeam::Roster(WorldSession* session) { - Player* pl = NULL; + Player* player = NULL; uint8 unk308 = 0; @@ -378,13 +376,13 @@ void ArenaTeam::Roster(WorldSession* session) for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) { - pl = ObjectAccessor::FindPlayer(itr->Guid); + player = ObjectAccessor::FindPlayer(itr->Guid); data << uint64(itr->Guid); // guid - data << uint8((pl ? 1 : 0)); // online flag + data << uint8((player ? 1 : 0)); // online flag data << itr->Name; // member name data << uint32((itr->Guid == GetCaptain() ? 0 : 1));// captain flag 0 captain 1 member - data << uint8((pl ? pl->getLevel() : 0)); // unknown, level? + data << uint8((player ? player->getLevel() : 0)); // unknown, level? data << uint8(itr->Class); // class data << uint32(itr->WeekGames); // played this week data << uint32(itr->WeekWins); // wins this week @@ -408,11 +406,11 @@ void ArenaTeam::Query(WorldSession* session) data << uint32(GetId()); // team id data << GetName(); // team name data << uint32(GetType()); // arena team type (2=2x2, 3=3x3 or 5=5x5) - data << uint32(BackgroundColor); // background color - data << uint32(EmblemStyle); // emblem style - data << uint32(EmblemColor); // emblem color - data << uint32(BorderStyle); // border style - data << uint32(BorderColor); // border color + data << uint32(BackgroundColor); // background color + data << uint32(EmblemStyle); // emblem style + data << uint32(EmblemColor); // emblem color + data << uint32(BorderStyle); // border style + data << uint32(BorderColor); // border color session->SendPacket(&data); sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_ARENA_TEAM_QUERY_RESPONSE"); } @@ -421,12 +419,12 @@ void ArenaTeam::SendStats(WorldSession* session) { WorldPacket data(SMSG_ARENA_TEAM_STATS, 4*7); data << uint32(GetId()); // team id - data << uint32(Stats.Rating); // rating - data << uint32(Stats.WeekGames); // games this week - data << uint32(Stats.WeekWins); // wins this week - data << uint32(Stats.SeasonGames); // played this season - data << uint32(Stats.SeasonWins); // wins this season - data << uint32(Stats.Rank); // rank + data << uint32(Stats.Rating); // rating + data << uint32(Stats.WeekGames); // games this week + data << uint32(Stats.WeekWins); // wins this week + data << uint32(Stats.SeasonGames); // played this season + data << uint32(Stats.SeasonWins); // wins this season + data << uint32(Stats.Rank); // rank session->SendPacket(&data); } @@ -435,11 +433,8 @@ void ArenaTeam::NotifyStatsChanged() // This is called after a rated match ended // Updates arena team stats for every member of the team (not only the ones who participated!) for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) - { - Player* plr = ObjectAccessor::FindPlayer(itr->Guid); - if (plr) + if (Player* plr = ObjectAccessor::FindPlayer(itr->Guid)) SendStats(plr->GetSession()); - } } void ArenaTeam::Inspect(WorldSession* session, uint64 guid) @@ -485,11 +480,8 @@ void ArenaTeamMember::ModifyMatchmakerRating(int32 mod, uint32 /*slot*/) void ArenaTeam::BroadcastPacket(WorldPacket* packet) { for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) - { - Player* player = ObjectAccessor::FindPlayer(itr->Guid); - if (player) + if (Player* player = ObjectAccessor::FindPlayer(itr->Guid)) player->GetSession()->SendPacket(packet); - } } void ArenaTeam::BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3) @@ -525,7 +517,7 @@ void ArenaTeam::BroadcastEvent(ArenaTeamEvents event, uint64 guid, uint8 strCoun uint8 ArenaTeam::GetSlotByType(uint32 type) { - switch(type) + switch (type) { case ARENA_TEAM_2v2: return 0; case ARENA_TEAM_3v3: return 1; diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index c65226a53aa..4f013f72e5c 100755 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -20,10 +20,14 @@ #define TRINITYCORE_ARENATEAM_H #include "QueryResult.h" -#include "Player.h" -#include "ObjectMgr.h" +#include <ace/Singleton.h> +#include <list> +#include <map> class WorldSession; +class WorldPacket; +class Player; +class Group; enum ArenaTeamCommandTypes { @@ -115,7 +119,7 @@ class ArenaTeam ArenaTeam(); ~ArenaTeam(); - bool Create(uint32 captainGuid, uint8 type, std::string teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor); + bool Create(uint64 captainGuid, uint8 type, std::string teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor); void Disband(WorldSession* session); typedef std::list<ArenaTeamMember> MemberList; diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index 59f31e36971..d433a5e8b36 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -15,8 +15,13 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "Common.h" +#include "Define.h" #include "ArenaTeamMgr.h" +#include "World.h" +#include "Log.h" +#include "DatabaseEnv.h" +#include "Language.h" +#include "ObjectAccessor.h" ArenaTeamMgr::ArenaTeamMgr() { diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index ce7fa8d81a4..bd45fee29f5 100755 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -691,7 +691,7 @@ void BattlegroundMgr::CreateInitialBattlegrounds() Field *fields = result->Fetch(); uint32 bgTypeID_ = fields[0].GetUInt32(); - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeID_, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeID_, NULL)) continue; // can be overwrite by values from DB diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp index e9e7a9f4d2b..dafb0ebc11f 100755 --- a/src/server/game/Conditions/DisableMgr.cpp +++ b/src/server/game/Conditions/DisableMgr.cpp @@ -16,25 +16,34 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "DisableMgr.h" #include "ObjectMgr.h" #include "OutdoorPvP.h" #include "SpellMgr.h" #include "VMapManager2.h" -#include "DisableMgr.h" -DisableMgr::DisableMgr() +namespace DisableMgr { -} -DisableMgr::~DisableMgr() +namespace { - for (DisableMap::iterator itr = m_DisableMap.begin(); itr != m_DisableMap.end(); ++itr) - itr->second.clear(); + struct DisableData + { + uint8 flags; + std::set<uint32> params[2]; // params0, params1 + }; - m_DisableMap.clear(); + // single disables here with optional data + typedef std::map<uint32, DisableData> DisableTypeMap; + // global disable map by source + typedef std::map<DisableType, DisableTypeMap> DisableMap; + + DisableMap m_DisableMap; + + uint8 MAX_DISABLE_TYPES = 7; } -void DisableMgr::LoadDisables() +void LoadDisables() { uint32 oldMSTime = getMSTime(); @@ -223,7 +232,7 @@ void DisableMgr::LoadDisables() sLog->outString(); } -void DisableMgr::CheckQuestDisables() +void CheckQuestDisables() { uint32 oldMSTime = getMSTime(); @@ -254,7 +263,7 @@ void DisableMgr::CheckQuestDisables() sLog->outString(); } -bool DisableMgr::IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags) +bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags) { ASSERT(type < MAX_DISABLE_TYPES); if (m_DisableMap[type].empty()) @@ -345,3 +354,5 @@ bool DisableMgr::IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, return false; } + +} // Namespace diff --git a/src/server/game/Conditions/DisableMgr.h b/src/server/game/Conditions/DisableMgr.h index 53373bfe58d..2931c5ea4ad 100755 --- a/src/server/game/Conditions/DisableMgr.h +++ b/src/server/game/Conditions/DisableMgr.h @@ -19,7 +19,7 @@ #ifndef TRINITY_DISABLEMGR_H #define TRINITY_DISABLEMGR_H -#include <ace/Singleton.h> +#include "Define.h" class Unit; @@ -54,34 +54,11 @@ enum VmapDisableTypes VMAP_DISABLE_LIQUIDSTATUS = 0x8, }; -#define MAX_DISABLE_TYPES 7 - -struct DisableData -{ - uint8 flags; - std::set<uint32> params[2]; // params0, params1 -}; - -typedef std::map<uint32, DisableData> DisableTypeMap; // single disables here with optional data -typedef std::map<DisableType, DisableTypeMap> DisableMap; // global disable map by source - -class DisableMgr +namespace DisableMgr { - friend class ACE_Singleton<DisableMgr, ACE_Null_Mutex>; - DisableMgr(); - ~DisableMgr(); - - public: - - void LoadDisables(); - bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0); - void CheckQuestDisables(); - - protected: - - DisableMap m_DisableMap; -}; - -#define sDisableMgr ACE_Singleton<DisableMgr, ACE_Null_Mutex>::instance() + void LoadDisables(); + bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0); + void CheckQuestDisables(); +} #endif //TRINITY_DISABLEMGR_H diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index c9752c6377b..348388b72a4 100755 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -379,7 +379,7 @@ void LFGMgr::InitializeLockedDungeons(Player* plr) LfgLockStatusType locktype = LFG_LOCKSTATUS_OK; if (dungeon->expansion > expansion) locktype = LFG_LOCKSTATUS_INSUFFICIENT_EXPANSION; - else if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_MAP, dungeon->map, plr)) + else if (DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, dungeon->map, plr)) locktype = LFG_LOCKSTATUS_RAID_LOCKED; else if (dungeon->difficulty > DUNGEON_DIFFICULTY_NORMAL && plr->GetBoundInstance(dungeon->map, Difficulty(dungeon->difficulty))) locktype = LFG_LOCKSTATUS_RAID_LOCKED; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 89516bf45c9..ca5c3f2f132 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2086,7 +2086,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati return false; } - if (AccountMgr::IsPlayerAccount(GetSession()->GetSecurity()) && sDisableMgr->IsDisabledFor(DISABLE_TYPE_MAP, mapid, this)) + if (AccountMgr::IsPlayerAccount(GetSession()->GetSecurity()) && DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, mapid, this)) { sLog->outError("Player (GUID: %u, name: %s) tried to enter a forbidden map %u", GetGUIDLow(), GetName(), mapid); SendTransferAborted(mapid, TRANSFER_ABORT_MAP_NOT_ALLOWED); @@ -14531,7 +14531,7 @@ bool Player::CanSeeStartQuest(Quest const *pQuest) SatisfyQuestExclusiveGroup(pQuest, false) && SatisfyQuestReputation(pQuest, false) && SatisfyQuestPreviousQuest(pQuest, false) && SatisfyQuestNextChain(pQuest, false) && SatisfyQuestPrevChain(pQuest, false) && SatisfyQuestDay(pQuest, false) && SatisfyQuestWeek(pQuest, false) && - !sDisableMgr->IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this)) + !DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this)) { return getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF) >= pQuest->GetMinLevel(); } @@ -14547,7 +14547,7 @@ bool Player::CanTakeQuest(Quest const *pQuest, bool msg) && SatisfyQuestPreviousQuest(pQuest, msg) && SatisfyQuestTimed(pQuest, msg) && SatisfyQuestNextChain(pQuest, msg) && SatisfyQuestPrevChain(pQuest, msg) && SatisfyQuestDay(pQuest, msg) && SatisfyQuestWeek(pQuest, msg) - && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this) + && !DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, pQuest->GetQuestId(), this) && SatisfyQuestConditions(pQuest, msg); } @@ -18147,7 +18147,7 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report else if (ar->item2 && !HasItemCount(ar->item2, 1)) missingItem = ar->item2; - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_MAP, target_map, this)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, target_map, this)) { GetSession()->SendAreaTriggerMessage("%s", GetSession()->GetTrinityString(LANG_INSTANCE_CLOSED)); return false; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 3ebc82023a0..a7f92e1e649 100755 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2486,7 +2486,7 @@ void ObjectMgr::LoadItemTemplates() else if (itemTemplate.Spells[1].SpellId != -1) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(itemTemplate.Spells[1].SpellId); - if (!spellInfo && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_SPELL, itemTemplate.Spells[1].SpellId, NULL)) + if (!spellInfo && !DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, itemTemplate.Spells[1].SpellId, NULL)) { sLog->outErrorDb("Item (Entry: %u) has wrong (not existing) spell in spellid_%d (%d)", entry, 1+1, itemTemplate.Spells[1].SpellId); itemTemplate.Spells[0].SpellId = 0; @@ -2534,7 +2534,7 @@ void ObjectMgr::LoadItemTemplates() if (itemTemplate.Spells[j].SpellId && itemTemplate.Spells[j].SpellId != -1) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(itemTemplate.Spells[j].SpellId); - if (!spellInfo && !sDisableMgr->IsDisabledFor(DISABLE_TYPE_SPELL, itemTemplate.Spells[j].SpellId, NULL)) + if (!spellInfo && !DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, itemTemplate.Spells[j].SpellId, NULL)) { sLog->outErrorDb("Item (Entry: %u) has wrong (not existing) spell in spellid_%d (%d)", entry, j+1, itemTemplate.Spells[j].SpellId); itemTemplate.Spells[j].SpellId = 0; @@ -3752,7 +3752,7 @@ void ObjectMgr::LoadQuests() for (QuestMap::iterator iter = mQuestTemplates.begin(); iter != mQuestTemplates.end(); ++iter) { // skip post-loading checks for disabled quests - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_QUEST, iter->first, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, iter->first, NULL)) continue; Quest * qinfo = iter->second; @@ -6223,8 +6223,6 @@ void ObjectMgr::SetHighestGuids() sGroupMgr->SetGroupDbStoreSize((*result)[0].GetUInt32()+1); } - - uint32 ObjectMgr::GenerateAuctionID() { if (m_auctionid >= 0xFFFFFFFE) diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp index 11675edd3ff..7626845e2c7 100755 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp @@ -60,7 +60,7 @@ void OutdoorPvPMgr::InitOutdoorPvP() typeId = fields[0].GetUInt32(); - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_OUTDOORPVP, typeId, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_OUTDOORPVP, typeId, NULL)) continue; if (typeId >= MAX_OUTDOORPVP_TYPES) diff --git a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp index beb55b72c9f..5d18e3309a3 100755 --- a/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp @@ -91,7 +91,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recv_data) return; } - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeId_, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeId_, NULL)) { ChatHandler(this).PSendSysMessage(LANG_BG_DISABLED); return; @@ -246,7 +246,6 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recv_data) void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket & /*recv_data*/) { - // empty opcode sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd MSG_BATTLEGROUND_PLAYER_POSITIONS Message"); Battleground *bg = _player->GetBattleground(); @@ -256,56 +255,49 @@ void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket & /*recv_ switch(bg->GetTypeID(true)) { case BATTLEGROUND_WS: - { - uint32 count1 = 0; //always constant zero? - uint32 count2 = 0; //count of next fields + { + uint32 count = 0; - Player *ali_plr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetAllianceFlagPickerGUID()); - if (ali_plr) - ++count2; + Player* aplr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetAllianceFlagPickerGUID()); + if (aplr) + ++count; - Player *horde_plr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetHordeFlagPickerGUID()); - if (horde_plr) - ++count2; + Player* hplr = ObjectAccessor::FindPlayer(((BattlegroundWS*)bg)->GetHordeFlagPickerGUID()); + if (hplr) + ++count; - WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, (4+4+16*count1+16*count2)); - data << count1; // alliance flag holders count - obsolete, now always 0 - /*for (uint8 i = 0; i < count1; ++i) - { - data << uint64(0); // guid - data << (float)0; // x - data << (float)0; // y - }*/ - data << count2; // horde flag holders count - obsolete, now count of next fields - if (ali_plr) - { - data << (uint64)ali_plr->GetGUID(); - data << (float)ali_plr->GetPositionX(); - data << (float)ali_plr->GetPositionY(); - } - if (horde_plr) - { - data << (uint64)horde_plr->GetGUID(); - data << (float)horde_plr->GetPositionX(); - data << (float)horde_plr->GetPositionY(); - } + WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, 4 + 4 + 16 * count); + data << 0; + data << count; + if (aplr) + { + data << uint64(aplr->GetGUID()); + data << float(aplr->GetPositionX()); + data << float(aplr->GetPositionY()); + } - SendPacket(&data); + if (hplr) + { + data << uint64(hplr->GetGUID()); + data << float(hplr->GetPositionX()); + data << float(hplr->GetPositionY()); } + + SendPacket(&data); break; + } case BATTLEGROUND_EY: //TODO : fix me! break; case BATTLEGROUND_AB: case BATTLEGROUND_AV: - { - //for other BG types - send default - WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, (4+4)); - data << uint32(0); - data << uint32(0); - SendPacket(&data); - } + { + WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, (4+4)); + data << uint32(0); + data << uint32(0); + SendPacket(&data); break; + } default: //maybe it is sent also in arena - do nothing break; @@ -677,7 +669,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recv_data) return; } - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, BATTLEGROUND_AA, NULL)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, BATTLEGROUND_AA, NULL)) { ChatHandler(this).PSendSysMessage(LANG_ARENA_DISABLED); return; diff --git a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp index 92ea0cac5f3..51286eee8f8 100755 --- a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp @@ -835,7 +835,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data) // Create arena team ArenaTeam* arenaTeam = new ArenaTeam(); - if (!arenaTeam->Create(GUID_LOPART(_player->GetGUID()), type, name, background, icon, iconcolor, border, bordercolor)) + if (!arenaTeam->Create(_player->GetGUID(), type, name, background, icon, iconcolor, border, bordercolor)) { delete arenaTeam; return; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 025fbeb9c90..9ef989865bb 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -868,7 +868,7 @@ void WorldSession::ReadAddonsInfo(WorldPacket &data) AddonInfo addon(addonName, enabled, crc, 2, true); - SavedAddon const* savedAddon = sAddonMgr->GetAddonInfo(addonName); + SavedAddon const* savedAddon = AddonMgr::GetAddonInfo(addonName); if (savedAddon) { bool match = true; @@ -883,7 +883,7 @@ void WorldSession::ReadAddonsInfo(WorldPacket &data) } else { - sAddonMgr->SaveAddon(addon); + AddonMgr::SaveAddon(addon); sLog->outDetail("ADDON: %s (0x%x) was not known, saving...", addon.Name.c_str(), addon.CRC); } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index fe082119f78..62954132fbb 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -939,6 +939,8 @@ class WorldSession uint32 _accountId; uint8 m_expansion; + typedef std::list<AddonInfo> AddonsList; + time_t _logoutTime; bool m_inQueue; // session wait in auth.queue bool m_playerLoading; // code processed in LoginPlayer diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d456cfdcf47..d005f5b2404 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2903,7 +2903,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered return; } - if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, m_caster)) + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, m_caster)) { SendCastResult(SPELL_FAILED_SPELL_UNAVAILABLE); finish(false); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 3da34bc2a47..0cd481d3844 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1339,7 +1339,7 @@ void World::SetInitialWorldSettings() LoadRandomEnchantmentsTable(); sLog->outString("Loading Disables"); - sDisableMgr->LoadDisables(); // must be before loading quests and items + DisableMgr::LoadDisables(); // must be before loading quests and items sLog->outString("Loading Items..."); // must be after LoadRandomEnchantmentsTable and LoadPageTexts sObjectMgr->LoadItemTemplates(); @@ -1405,7 +1405,7 @@ void World::SetInitialWorldSettings() sObjectMgr->LoadQuests(); // must be loaded after DBCs, creature_template, item_template, gameobject tables sLog->outString("Checking Quest Disables"); - sDisableMgr->CheckQuestDisables(); // must be after loading quests + DisableMgr::CheckQuestDisables(); // must be after loading quests sLog->outString("Loading Quest POI"); sObjectMgr->LoadQuestPOI(); @@ -1588,7 +1588,7 @@ void World::SetInitialWorldSettings() sTicketMgr->LoadSurveys(); sLog->outString("Loading client addons..."); - sAddonMgr->LoadFromDB(); + AddonMgr::LoadFromDB(); ///- Handle outdated emails (delete/return) sLog->outString("Returning old mails..."); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 214e624fb22..fcdd30402e6 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -1104,9 +1104,9 @@ public: static bool HandleReloadDisablesCommand(ChatHandler* handler, const char* /*args*/) { sLog->outString("Re-Loading disables table..."); - sDisableMgr->LoadDisables(); + DisableMgr::LoadDisables(); sLog->outString("Checking quest disables..."); - sDisableMgr->CheckQuestDisables(); + DisableMgr::CheckQuestDisables(); handler->SendGlobalGMSysMessage("DB table `disables` reloaded."); return true; } |