diff --git a/src/common/Collision/Management/VMapManager2.cpp b/src/common/Collision/Management/VMapManager2.cpp index 991b8d877..12f7a2c73 100644 --- a/src/common/Collision/Management/VMapManager2.cpp +++ b/src/common/Collision/Management/VMapManager2.cpp @@ -25,7 +25,6 @@ #include "WorldModel.h" #include #include -#include #include "DisableMgr.h" #include "DBCStores.h" #include "Log.h" diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp index f4adab704..2b1ea059f 100644 --- a/src/common/Configuration/Config.cpp +++ b/src/common/Configuration/Config.cpp @@ -8,6 +8,12 @@ #include "Errors.h" #include "Log.h" +ConfigMgr* ConfigMgr::instance() +{ + static ConfigMgr instance; + return &instance; +} + // Defined here as it must not be exposed to end-users. bool ConfigMgr::GetValueHelper(const char* name, ACE_TString &result) { diff --git a/src/common/Configuration/Config.h b/src/common/Configuration/Config.h index 103fd2c1c..58678b131 100644 --- a/src/common/Configuration/Config.h +++ b/src/common/Configuration/Config.h @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -19,13 +18,12 @@ typedef acore::AutoPtr Config; class ConfigMgr { - friend class ACE_Singleton; friend class ConfigLoader; - ConfigMgr() { } - ~ConfigMgr() { } - public: + + static ConfigMgr* instance(); + /// Method used only for loading main configuration files (authserver.conf and worldserver.conf) bool LoadInitial(char const* file); @@ -62,10 +60,12 @@ private: Config _config; LockType _configLock; - ConfigMgr(ConfigMgr const&); - ConfigMgr& operator=(ConfigMgr const&); + ConfigMgr() = default; + ConfigMgr(ConfigMgr const&) = delete; + ConfigMgr& operator=(ConfigMgr const&) = delete; + ~ConfigMgr() = default; }; -#define sConfigMgr ACE_Singleton::instance() +#define sConfigMgr ConfigMgr::instance() #endif diff --git a/src/common/Dynamic/FactoryHolder.h b/src/common/Dynamic/FactoryHolder.h index 6e26733cb..6378490b8 100644 --- a/src/common/Dynamic/FactoryHolder.h +++ b/src/common/Dynamic/FactoryHolder.h @@ -11,30 +11,30 @@ #include "Dynamic/TypeList.h" #include "ObjectRegistry.h" -/** FactoryHolder holds a factory object of a specific type +/* + * FactoryHolder holds a factory object of a specific type */ template class FactoryHolder { - public: - typedef ObjectRegistry, Key > FactoryHolderRegistry; - friend class ACE_Singleton; - typedef ACE_Singleton FactoryHolderRepository; +public: + typedef ObjectRegistry, Key > FactoryHolderRegistry; - FactoryHolder(Key k) : i_key(k) { } - virtual ~FactoryHolder() { } - inline Key key() const { return i_key; } + FactoryHolder(Key k) : i_key(k) { } + virtual ~FactoryHolder() { } + inline Key key() const { return i_key; } - void RegisterSelf(void) { FactoryHolderRepository::instance()->InsertItem(this, i_key); } - void DeregisterSelf(void) { FactoryHolderRepository::instance()->RemoveItem(this, false); } + void RegisterSelf(void) { FactoryHolderRegistry::instance()->InsertItem(this, i_key); } + void DeregisterSelf(void) { FactoryHolderRegistry::instance()->RemoveItem(this, false); } - /// Abstract Factory create method - virtual T* Create(void *data = NULL) const = 0; - private: - Key i_key; + /// Abstract Factory create method + virtual T* Create(void* data = NULL) const = 0; +private: + Key i_key; }; -/** Permissible is a classic way of letting the object decide +/* + * Permissible is a classic way of letting the object decide * whether how good they handle things. This is not retricted * to factory selectors. */ @@ -45,5 +45,5 @@ class Permissible virtual ~Permissible() { } virtual int Permit(const T *) const = 0; }; -#endif +#endif diff --git a/src/common/Dynamic/ObjectRegistry.h b/src/common/Dynamic/ObjectRegistry.h index 3458fa446..4a6d70afc 100644 --- a/src/common/Dynamic/ObjectRegistry.h +++ b/src/common/Dynamic/ObjectRegistry.h @@ -8,7 +8,6 @@ #define ACORE_OBJECTREGISTRY_H #include "Define.h" -#include #include #include #include @@ -29,6 +28,12 @@ class ObjectRegistry return( iter == i_registeredObjects.end() ? NULL : iter->second ); } + static ObjectRegistry* instance() + { + static ObjectRegistry* instance = new ObjectRegistry(); + return instance; + } + /// Inserts a registry item bool InsertItem(T *obj, Key key, bool override = false) { diff --git a/src/common/Logging/Log.cpp b/src/common/Logging/Log.cpp index 44fae1ef1..0740aeed8 100644 --- a/src/common/Logging/Log.cpp +++ b/src/common/Logging/Log.cpp @@ -65,6 +65,12 @@ Log::~Log() miscLogFile = NULL; } +Log* Log::instance() +{ + static Log instance; + return &instance; +} + void Log::SetLogLevel(char *Level) { int32 NewLevel = atoi((char*)Level); diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h index 1991092f2..672fa24b9 100644 --- a/src/common/Logging/Log.h +++ b/src/common/Logging/Log.h @@ -9,7 +9,6 @@ #include "Common.h" #include -#include class WorldPacket; @@ -96,13 +95,17 @@ const int Colors = int(WHITE)+1; class Log { - friend class ACE_Singleton; - private: Log(); ~Log(); + Log(Log const&) = delete; + Log(Log&&) = delete; + Log& operator=(Log const&) = delete; + Log& operator=(Log&&) = delete; public: + static Log* instance(); + void Initialize(); void ReloadConfig(); @@ -194,7 +197,7 @@ class Log DebugLogFilters m_DebugLogMask; }; -#define sLog ACE_Singleton::instance() +#define sLog Log::instance() #endif diff --git a/src/common/Threading/DelayExecutor.cpp b/src/common/Threading/DelayExecutor.cpp index 107f6388a..f87746f02 100644 --- a/src/common/Threading/DelayExecutor.cpp +++ b/src/common/Threading/DelayExecutor.cpp @@ -1,13 +1,12 @@ -#include #include #include #include "Threading.h" - #include "DelayExecutor.h" DelayExecutor* DelayExecutor::instance() { - return ACE_Singleton::instance(); + static DelayExecutor instance; + return &instance; } DelayExecutor::DelayExecutor() diff --git a/src/server/game/AI/CreatureAIFactory.h b/src/server/game/AI/CreatureAIFactory.h index bd26b94f0..21901c741 100644 --- a/src/server/game/AI/CreatureAIFactory.h +++ b/src/server/game/AI/CreatureAIFactory.h @@ -6,7 +6,6 @@ #ifndef ACORE_CREATUREAIFACTORY_H #define ACORE_CREATUREAIFACTORY_H -//#include "Policies/Singleton.h" #include "ObjectRegistry.h" #include "FactoryHolder.h" #include "GameObjectAI.h" @@ -36,7 +35,6 @@ CreatureAIFactory::Create(void* data) const typedef FactoryHolder CreatureAICreator; typedef FactoryHolder::FactoryHolderRegistry CreatureAIRegistry; -typedef FactoryHolder::FactoryHolderRepository CreatureAIRepository; //GO struct SelectableGameObjectAI : public FactoryHolder, public Permissible @@ -64,5 +62,5 @@ GameObjectAIFactory::Create(void* data) const typedef FactoryHolder GameObjectAICreator; typedef FactoryHolder::FactoryHolderRegistry GameObjectAIRegistry; -typedef FactoryHolder::FactoryHolderRepository GameObjectAIRepository; + #endif diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index db66cd6bf..2bef6b620 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -19,7 +19,7 @@ namespace FactorySelector CreatureAI* selectAI(Creature* creature) { const CreatureAICreator* ai_factory = NULL; - CreatureAIRegistry& ai_registry(*CreatureAIRepository::instance()); + CreatureAIRegistry& ai_registry(*CreatureAIRegistry::instance()); // xinef: if we have controlable guardian, define petai for players as they can steer him, otherwise db / normal ai // xinef: dont remember why i changed this qq commented out as may break some quests @@ -92,7 +92,7 @@ namespace FactorySelector MovementGenerator* selectMovementGenerator(Creature* creature) { - MovementGeneratorRegistry& mv_registry(*MovementGeneratorRepository::instance()); + MovementGeneratorRegistry& mv_registry(*MovementGeneratorRegistry::instance()); ASSERT(creature->GetCreatureTemplate()); const MovementGeneratorCreator* mv_factory = mv_registry.GetRegistryItem(creature->GetDefaultMovementType()); @@ -122,7 +122,7 @@ namespace FactorySelector GameObjectAI* SelectGameObjectAI(GameObject* go) { const GameObjectAICreator* ai_factory = NULL; - GameObjectAIRegistry& ai_registry(*GameObjectAIRepository::instance()); + GameObjectAIRegistry& ai_registry(*GameObjectAIRegistry::instance()); if (GameObjectAI* scriptedAI = sScriptMgr->GetGameObjectAI(go)) return scriptedAI; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 5c3f53e71..14e41341a 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -20,6 +20,12 @@ #include "SmartScriptMgr.h" +SmartWaypointMgr* SmartWaypointMgr::instance() +{ + static SmartWaypointMgr instance; + return &instance; +} + void SmartWaypointMgr::LoadFromDB() { uint32 oldMSTime = getMSTime(); @@ -92,6 +98,12 @@ SmartWaypointMgr::~SmartWaypointMgr() } } +SmartAIMgr* SmartAIMgr::instance() +{ + static SmartAIMgr instance; + return &instance; +} + void SmartAIMgr::LoadSmartAIFromDB() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index ea89b5f28..058ab75d8 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1569,6 +1569,7 @@ typedef std::unordered_map WPPath; typedef std::list ObjectList; typedef std::list GuidList; + class ObjectGuidList { ObjectList* m_objectList; @@ -1619,15 +1620,17 @@ public: delete m_guidList; } }; + typedef std::unordered_map ObjectListMap; class SmartWaypointMgr { - friend class ACE_Singleton; SmartWaypointMgr() {} public: ~SmartWaypointMgr(); + static SmartWaypointMgr* instance(); + void LoadFromDB(); WPPath* GetPath(uint32 id) @@ -1650,11 +1653,12 @@ typedef std::unordered_map SmartAIEventMap; class SmartAIMgr { - friend class ACE_Singleton; SmartAIMgr(){}; public: ~SmartAIMgr(){}; + static SmartAIMgr* instance(); + void LoadSmartAIFromDB(); SmartAIEventList GetScript(int32 entry, SmartScriptType type) @@ -1812,6 +1816,7 @@ class SmartAIMgr //bool IsTextValid(SmartScriptHolder const& e, uint32 id); }; -#define sSmartScriptMgr ACE_Singleton::instance() -#define sSmartWaypointMgr ACE_Singleton::instance() +#define sSmartScriptMgr SmartAIMgr::instance() +#define sSmartWaypointMgr SmartWaypointMgr::instance() + #endif diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 251ffc5f1..a331c6185 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2333,6 +2333,12 @@ bool AchievementMgr::CanUpdateCriteria(AchievementCriteriaEntry const* criteria, return true; } +AchievementGlobalMgr* AchievementGlobalMgr::instance() +{ + static AchievementGlobalMgr instance; + return &instance; +} + bool AchievementGlobalMgr::IsStatisticCriteria(AchievementCriteriaEntry const* achievementCriteria) const { return isStatisticAchievement(sAchievementStore.LookupEntry(achievementCriteria->referredAchievement)); diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 1034cde57..7c16dd2ee 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -11,7 +11,6 @@ #include #include "Common.h" -#include #include "DatabaseEnv.h" #include "DBCEnums.h" #include "DBCStores.h" @@ -295,11 +294,12 @@ class AchievementMgr class AchievementGlobalMgr { - friend class ACE_Singleton; AchievementGlobalMgr() {} ~AchievementGlobalMgr() {} public: + static AchievementGlobalMgr* instance(); + bool IsStatisticCriteria(AchievementCriteriaEntry const* achievementCriteria) const; bool isStatisticAchievement(AchievementEntry const* achievement) const; @@ -388,6 +388,6 @@ class AchievementGlobalMgr std::map m_AchievementCriteriasByCondition[ACHIEVEMENT_CRITERIA_CONDITION_TOTAL]; }; -#define sAchievementMgr ACE_Singleton::instance() +#define sAchievementMgr AchievementGlobalMgr::instance() #endif diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 4aba5703b..b8363279f 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -37,6 +37,12 @@ AuctionHouseMgr::~AuctionHouseMgr() delete itr->second; } +AuctionHouseMgr* AuctionHouseMgr::instance() +{ + static AuctionHouseMgr instance; + return &instance; +} + AuctionHouseObject* AuctionHouseMgr::GetAuctionsMap(uint32 factionTemplateId) { if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION)) diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 8bf251def..27092511b 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -7,8 +7,6 @@ #ifndef _AUCTION_HOUSE_MGR_H #define _AUCTION_HOUSE_MGR_H -#include - #include "Common.h" #include "DatabaseEnv.h" #include "DBCStructure.h" @@ -131,8 +129,6 @@ class AuctionHouseObject class AuctionHouseMgr { - friend class ACE_Singleton; - private: AuctionHouseMgr(); ~AuctionHouseMgr(); @@ -141,6 +137,8 @@ class AuctionHouseMgr typedef std::unordered_map ItemMap; + static AuctionHouseMgr* instance(); + AuctionHouseObject* GetAuctionsMap(uint32 factionTemplateId); AuctionHouseObject* GetBidsMap(uint32 factionTemplateId); @@ -184,6 +182,6 @@ class AuctionHouseMgr ItemMap mAitems; }; -#define sAuctionMgr ACE_Singleton::instance() +#define sAuctionMgr AuctionHouseMgr::instance() #endif diff --git a/src/server/game/Battlefield/BattlefieldMgr.cpp b/src/server/game/Battlefield/BattlefieldMgr.cpp index c15975b18..12e8c7f94 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.cpp +++ b/src/server/game/Battlefield/BattlefieldMgr.cpp @@ -22,6 +22,12 @@ BattlefieldMgr::~BattlefieldMgr() delete *itr; } +BattlefieldMgr* BattlefieldMgr::instance() +{ + static BattlefieldMgr instance; + return &instance; +} + void BattlefieldMgr::InitBattlefield() { Battlefield* pBf = new BattlefieldWG; diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index 9622dc6c1..2819da608 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -8,7 +8,6 @@ #define BATTLEFIELD_MGR_H_ #include "Battlefield.h" -#include "ace/Singleton.h" class Player; class GameObject; @@ -25,6 +24,8 @@ class BattlefieldMgr // dtor ~BattlefieldMgr(); + static BattlefieldMgr* instance(); + // create battlefield events void InitBattlefield(); // called when a player enters an battlefield area @@ -62,6 +63,6 @@ class BattlefieldMgr uint32 m_UpdateTimer; }; -#define sBattlefieldMgr ACE_Singleton::instance() +#define sBattlefieldMgr BattlefieldMgr::instance() #endif diff --git a/src/server/game/Battlegrounds/ArenaTeam.h b/src/server/game/Battlegrounds/ArenaTeam.h index a4bb56260..bf3dab21a 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.h +++ b/src/server/game/Battlegrounds/ArenaTeam.h @@ -9,7 +9,6 @@ #include "QueryResult.h" #include "Map.h" -#include #include #include diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index ebe4edea2..46923f9b0 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -26,6 +26,12 @@ ArenaTeamMgr::~ArenaTeamMgr() delete itr->second; } +ArenaTeamMgr* ArenaTeamMgr::instance() +{ + static ArenaTeamMgr instance; + return &instance; +} + // Arena teams collection ArenaTeam* ArenaTeamMgr::GetArenaTeamById(uint32 arenaTeamId) const { diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.h b/src/server/game/Battlegrounds/ArenaTeamMgr.h index 0ce916114..c94478236 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.h +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.h @@ -11,11 +11,12 @@ class ArenaTeamMgr { - friend class ACE_Singleton; ArenaTeamMgr(); ~ArenaTeamMgr(); public: + static ArenaTeamMgr* instance(); + typedef std::unordered_map ArenaTeamContainer; ArenaTeam* GetArenaTeamById(uint32 arenaTeamId) const; @@ -43,6 +44,6 @@ protected: uint32 LastArenaLogId; }; -#define sArenaTeamMgr ACE_Singleton::instance() +#define sArenaTeamMgr ArenaTeamMgr::instance() #endif diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index cf4b318a0..a259240de 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -58,6 +58,12 @@ BattlegroundMgr::~BattlegroundMgr() DeleteAllBattlegrounds(); } +BattlegroundMgr* BattlegroundMgr::instance() +{ + static BattlegroundMgr instance; + return &instance; +} + void BattlegroundMgr::DeleteAllBattlegrounds() { while (!m_Battlegrounds.empty()) diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 50d83e0bc..f93044bf1 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -12,14 +12,12 @@ #include "Battleground.h" #include "BattlegroundQueue.h" #include "CreatureAIImpl.h" -#include #include typedef std::map BattlegroundContainer; typedef std::unordered_map BattleMastersMap; typedef Battleground*(*bgRef)(Battleground*); - #define BATTLEGROUND_ARENA_POINT_DISTRIBUTION_DAY 86400 // how many seconds in day struct CreateBattlegroundData @@ -62,13 +60,13 @@ class RandomBattlegroundSystem class BattlegroundMgr { - friend class ACE_Singleton; - private: BattlegroundMgr(); ~BattlegroundMgr(); public: + static BattlegroundMgr* instance(); + void Update(uint32 diff); /* Packet Building */ @@ -161,5 +159,6 @@ class BattlegroundMgr BattleMastersMap mBattleMastersMap; }; -#define sBattlegroundMgr ACE_Singleton::instance() -#endif \ No newline at end of file +#define sBattlegroundMgr BattlegroundMgr::instance() + +#endif diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index ec1d5dd15..c449346b3 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -34,6 +34,12 @@ CalendarMgr::~CalendarMgr() delete *itr2; } +CalendarMgr* CalendarMgr::instance() +{ + static CalendarMgr instance; + return &instance; +} + void CalendarMgr::LoadFromDB() { uint32 count = 0; diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index 87e66d90d..3017bdbb0 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -7,7 +7,6 @@ #ifndef ACORE_CALENDARMGR_H #define ACORE_CALENDARMGR_H -#include #include "Common.h" #include "DatabaseEnv.h" #include "WorldPacket.h" @@ -257,8 +256,6 @@ typedef std::unordered_map CalendarE class CalendarMgr { - friend class ACE_Singleton; - private: CalendarMgr(); ~CalendarMgr(); @@ -272,6 +269,8 @@ class CalendarMgr uint64 _maxInviteId; public: + static CalendarMgr* instance(); + void LoadFromDB(); CalendarEvent* GetEvent(uint64 eventId, CalendarEventStore::iterator* it = NULL); @@ -318,6 +317,6 @@ class CalendarMgr void SendPacketToAllEventRelatives(WorldPacket packet, CalendarEvent const& calendarEvent); }; -#define sCalendarMgr ACE_Singleton::instance() +#define sCalendarMgr CalendarMgr::instance() #endif diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index ef977d985..bd75105ea 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -18,19 +18,21 @@ ChannelMgr::~ChannelMgr() ChannelMgr* ChannelMgr::forTeam(TeamId teamId) { + static ChannelMgr allianceChannelMgr(TEAM_ALLIANCE); + static ChannelMgr hordeChannelMgr(TEAM_HORDE); + if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) - return ACE_Singleton::instance(); // cross-faction + return &allianceChannelMgr; // cross-faction if (teamId == TEAM_ALLIANCE) - return ACE_Singleton::instance(); + return &allianceChannelMgr; if (teamId == TEAM_HORDE) - return ACE_Singleton::instance(); + return &hordeChannelMgr; - return NULL; + return nullptr; } - void ChannelMgr::LoadChannels() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h index c81483674..bbe9c6b2f 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.h +++ b/src/server/game/Chat/Channels/ChannelMgr.h @@ -8,13 +8,10 @@ #include "Common.h" #include "Channel.h" -#include - +#include "World.h" #include #include -#include "World.h" - #define MAX_CHANNEL_PASS_STR 31 class ChannelMgr diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 3b27ac4e2..2157437f3 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -597,6 +597,12 @@ ConditionMgr::~ConditionMgr() Clean(); } +ConditionMgr* ConditionMgr::instance() +{ + static ConditionMgr instance; + return &instance; +} + ConditionList ConditionMgr::GetConditionReferences(uint32 refId) { ConditionList conditions; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 7600b7a86..72c86a83c 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -9,7 +9,6 @@ #include "Define.h" #include "Errors.h" -#include #include #include @@ -229,13 +228,13 @@ typedef std::map ConditionReferenceContainer;//only used class ConditionMgr { - friend class ACE_Singleton; - private: ConditionMgr(); ~ConditionMgr(); public: + static ConditionMgr* instance(); + void LoadConditions(bool isReload = false); bool isConditionTypeValid(Condition* cond); ConditionList GetConditionReferences(uint32 refId); @@ -271,6 +270,6 @@ class ConditionMgr SmartEventConditionContainer SmartEventConditionStore; }; -#define sConditionMgr ACE_Singleton::instance() +#define sConditionMgr ConditionMgr::instance() #endif diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 95a7aec98..ca7935889 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -45,6 +45,12 @@ LFGMgr::~LFGMgr() delete itr->second; } +LFGMgr* LFGMgr::instance() +{ + static LFGMgr instance; + return &instance; +} + void LFGMgr::_LoadFromDB(Field* fields, uint64 guid) { if (!fields) diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index c51f00660..f7c8be82c 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -7,7 +7,6 @@ #ifndef _LFGMGR_H #define _LFGMGR_H -#include #include "DBCStructure.h" #include "Field.h" #include "LFG.h" @@ -379,8 +378,6 @@ struct LFGDungeonData class LFGMgr { - friend class ACE_Singleton; - private: LFGMgr(); ~LFGMgr(); @@ -401,6 +398,8 @@ class LFGMgr RBUsedDungeonsSet RBUsedDungeonsStore[2]; // for 2 factions public: + static LFGMgr* instance(); + // Functions used outside lfg namespace void Update(uint32 diff, uint8 task); @@ -590,5 +589,6 @@ class LFGMgr } // namespace lfg -#define sLFGMgr ACE_Singleton::instance() +#define sLFGMgr lfg::LFGMgr::instance() + #endif diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index a68d046a5..f8ffdff35 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -17,6 +17,12 @@ FormationMgr::~FormationMgr() delete itr->second; } +FormationMgr* FormationMgr::instance() +{ + static FormationMgr instance; + return &instance; +} + void FormationMgr::AddCreatureToGroup(uint32 groupId, Creature* member) { Map* map = member->FindMap(); diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index 13c7379d3..afb9fa9c3 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -28,10 +28,12 @@ typedef std::unordered_map CreatureGro class FormationMgr { - friend class ACE_Singleton; public: FormationMgr() { } ~FormationMgr(); + + static FormationMgr* instance(); + void AddCreatureToGroup(uint32 group_id, Creature* creature); void RemoveCreatureFromGroup(CreatureGroup* group, Creature* creature); void LoadCreatureFormations(); @@ -69,6 +71,6 @@ class CreatureGroup bool m_Formed; }; -#define sFormationMgr ACE_Singleton::instance() +#define sFormationMgr FormationMgr::instance() #endif diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 8c6678601..652707215 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -196,6 +196,12 @@ SocialMgr::~SocialMgr() { } +SocialMgr* SocialMgr::instance() +{ + static SocialMgr instance; + return &instance; +} + void SocialMgr::GetFriendInfo(Player* player, uint32 friendGUID, FriendInfo &friendInfo) { if (!player) diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index bc226ccf6..22b3ef373 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -7,9 +7,8 @@ #ifndef __ACORE_SOCIALMGR_H #define __ACORE_SOCIALMGR_H -#include -#include "DatabaseEnv.h" #include "Common.h" +#include "DatabaseEnv.h" class SocialMgr; class PlayerSocial; @@ -112,13 +111,13 @@ class PlayerSocial class SocialMgr { - friend class ACE_Singleton; - private: SocialMgr(); ~SocialMgr(); public: + static SocialMgr* instance(); + // Misc void RemovePlayerSocial(uint32 guid) { m_socialMap.erase(guid); } @@ -133,6 +132,6 @@ class SocialMgr SocialMap m_socialMap; }; -#define sSocialMgr ACE_Singleton::instance() -#endif +#define sSocialMgr SocialMgr::instance() +#endif diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 4d35948a0..5b86e1953 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -24,6 +24,12 @@ #endif #include +GameEventMgr* GameEventMgr::instance() +{ + static GameEventMgr instance; + return &instance; +} + bool GameEventMgr::CheckOneGameEvent(uint16 entry) const { switch (mGameEvent[entry].state) diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h index e893edd7b..0c3dd0b23 100644 --- a/src/server/game/Events/GameEventMgr.h +++ b/src/server/game/Events/GameEventMgr.h @@ -9,8 +9,6 @@ #include "Common.h" #include "SharedDefines.h" -#include "Define.h" -#include #define max_ge_check_delay DAY // 1 day in seconds @@ -83,13 +81,13 @@ class Quest; class GameEventMgr { - friend class ACE_Singleton; - private: GameEventMgr(); ~GameEventMgr() {}; public: + static GameEventMgr* instance(); + typedef std::set ActiveEvents; typedef std::vector GameEventDataMap; ActiveEvents const& GetActiveEventList() const { return m_ActiveEvents; } @@ -169,7 +167,7 @@ class GameEventMgr std::set modifiedHolidays; }; -#define sGameEventMgr ACE_Singleton::instance() +#define sGameEventMgr GameEventMgr::instance() bool IsHolidayActive(HolidayIds id); bool IsEventActive(uint16 event_id); diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp index 2844b82ce..984f4c799 100644 --- a/src/server/game/Globals/ObjectAccessor.cpp +++ b/src/server/game/Globals/ObjectAccessor.cpp @@ -35,6 +35,12 @@ ObjectAccessor::~ObjectAccessor() { } +ObjectAccessor* ObjectAccessor::instance() +{ + static ObjectAccessor instance; + return &instance; +} + Player* ObjectAccessor::GetObjectInWorld(uint64 guid, Player* /*typeSpecifier*/) { Player* player = HashMapHolder::Find(guid); diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h index b06a72abe..459dc19a2 100644 --- a/src/server/game/Globals/ObjectAccessor.h +++ b/src/server/game/Globals/ObjectAccessor.h @@ -11,7 +11,6 @@ #include "UpdateData.h" #include "GridDefines.h" #include "Object.h" -#include #include #include #include @@ -87,7 +86,6 @@ public: class ObjectAccessor { - friend class ACE_Singleton; private: ObjectAccessor(); ~ObjectAccessor(); @@ -95,6 +93,7 @@ class ObjectAccessor ObjectAccessor& operator=(const ObjectAccessor&); public: + static ObjectAccessor* instance(); // TODO: override these template functions for each holder type and add assertions template static T* GetObjectInOrOutOfWorld(uint64 guid, T* /*typeSpecifier*/) @@ -277,5 +276,6 @@ class ObjectAccessor mutable ACE_Thread_Mutex DelayedCorpseLock; }; -#define sObjectAccessor ACE_Singleton::instance() +#define sObjectAccessor ObjectAccessor::instance() + #endif diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 3c6649af4..a0dee4bb4 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -270,6 +270,12 @@ ObjectMgr::~ObjectMgr() delete itr->second; } +ObjectMgr* ObjectMgr::instance() +{ + static ObjectMgr instance; + return &instance; +} + void ObjectMgr::AddLocaleString(std::string const& s, LocaleConstant locale, StringVector& data) { if (!s.empty()) diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 2e0de8823..cd6e4a082 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -23,7 +23,6 @@ #include "Map.h" #include "ObjectAccessor.h" #include "ObjectDefines.h" -#include #include "VehicleDefines.h" #include #include @@ -465,12 +464,14 @@ typedef std::unordered_map BroadcastTextContainer; typedef std::set CellGuidSet; typedef std::unordered_map CellCorpseSet; + struct CellObjectGuids { CellGuidSet creatures; CellGuidSet gameobjects; CellCorpseSet corpses; }; + typedef std::unordered_map CellObjectGuidsMap; typedef std::unordered_map MapObjectGuids; @@ -686,13 +687,14 @@ class PlayerDumpReader; class ObjectMgr { friend class PlayerDumpReader; - friend class ACE_Singleton; private: ObjectMgr(); ~ObjectMgr(); public: + static ObjectMgr* instance(); + typedef std::unordered_map ItemMap; typedef std::unordered_map QuestMap; @@ -1499,6 +1501,6 @@ class ObjectMgr std::set _transportMaps; // Helper container storing map ids that are for transports only, loaded from gameobject_template }; -#define sObjectMgr ACE_Singleton::instance() +#define sObjectMgr ObjectMgr::instance() #endif diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp index fc5247267..982e26a02 100644 --- a/src/server/game/Groups/GroupMgr.cpp +++ b/src/server/game/Groups/GroupMgr.cpp @@ -21,6 +21,12 @@ GroupMgr::~GroupMgr() delete itr->second; } +GroupMgr* GroupMgr::instance() +{ + static GroupMgr instance; + return &instance; +} + void GroupMgr::InitGroupIds() { _nextGroupId = 1; diff --git a/src/server/game/Groups/GroupMgr.h b/src/server/game/Groups/GroupMgr.h index d16b46fcc..fbed611f4 100644 --- a/src/server/game/Groups/GroupMgr.h +++ b/src/server/game/Groups/GroupMgr.h @@ -11,12 +11,13 @@ class GroupMgr { - friend class ACE_Singleton; private: GroupMgr(); ~GroupMgr(); public: + static GroupMgr* instance(); + typedef std::map GroupContainer; Group* GetGroupByGUID(uint32 guid) const; @@ -37,6 +38,6 @@ protected: GroupContainer GroupStore; }; -#define sGroupMgr ACE_Singleton::instance() +#define sGroupMgr GroupMgr::instance() #endif diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index b6a9ecde8..a762b9901 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -16,6 +16,12 @@ GuildMgr::~GuildMgr() delete itr->second; } +GuildMgr* GuildMgr::instance() +{ + static GuildMgr instance; + return &instance; +} + void GuildMgr::AddGuild(Guild* guild) { GuildStore[guild->GetId()] = guild; diff --git a/src/server/game/Guilds/GuildMgr.h b/src/server/game/Guilds/GuildMgr.h index 562ec1bf9..acbf49b15 100644 --- a/src/server/game/Guilds/GuildMgr.h +++ b/src/server/game/Guilds/GuildMgr.h @@ -11,13 +11,13 @@ class GuildMgr { - friend class ACE_Singleton; - private: GuildMgr(); ~GuildMgr(); public: + static GuildMgr* instance(); + Guild* GetGuildByLeader(uint64 guid) const; Guild* GetGuildById(uint32 guildId) const; Guild* GetGuildByName(std::string const& guildName) const; @@ -37,6 +37,6 @@ protected: GuildContainer GuildStore; }; -#define sGuildMgr ACE_Singleton::instance() +#define sGuildMgr GuildMgr::instance() #endif diff --git a/src/server/game/Handlers/AddonHandler.cpp b/src/server/game/Handlers/AddonHandler.cpp index 8e55d002f..f66945d3c 100644 --- a/src/server/game/Handlers/AddonHandler.cpp +++ b/src/server/game/Handlers/AddonHandler.cpp @@ -18,6 +18,12 @@ AddonHandler::~AddonHandler() { } +AddonHandler* AddonHandler::instance() +{ + static AddonHandler instance; + return &instance; +} + bool AddonHandler::BuildAddonPacket(WorldPacket* Source, WorldPacket* Target) { ByteBuffer AddOnPacked; diff --git a/src/server/game/Handlers/AddonHandler.h b/src/server/game/Handlers/AddonHandler.h index ad8721402..486be0803 100644 --- a/src/server/game/Handlers/AddonHandler.h +++ b/src/server/game/Handlers/AddonHandler.h @@ -9,20 +9,20 @@ #include "Common.h" #include "Config.h" -#include #include "WorldPacket.h" class AddonHandler { - /* Construction */ - friend class ACE_Singleton; +public: AddonHandler(); + ~AddonHandler(); - public: - ~AddonHandler(); - //build addon packet - bool BuildAddonPacket(WorldPacket* Source, WorldPacket* Target); + static AddonHandler* instance(); + + //build addon packet + bool BuildAddonPacket(WorldPacket* Source, WorldPacket* Target); }; -#define sAddOnHandler ACE_Singleton::instance() -#endif +#define sAddOnHandler AddonHandler::instance() + +#endif diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index bd016b717..ca06d7832 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -43,6 +43,12 @@ InstanceSaveManager::~InstanceSaveManager() }*/ } +InstanceSaveManager* InstanceSaveManager::instance() +{ + static InstanceSaveManager instance; + return &instance; +} + /* - adding instance into manager */ diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h index eb86e1224..de7c426f0 100644 --- a/src/server/game/Instances/InstanceSaveMgr.h +++ b/src/server/game/Instances/InstanceSaveMgr.h @@ -11,7 +11,7 @@ #include "DatabaseEnv.h" #include "DBCEnums.h" #include "ObjectDefines.h" -#include + #include #include #include @@ -98,7 +98,6 @@ typedef std::unordered_map; friend class InstanceSave; private: @@ -106,6 +105,8 @@ class InstanceSaveManager ~InstanceSaveManager(); public: + static InstanceSaveManager* instance(); + typedef std::unordered_map InstanceSaveHashMap; struct InstResetEvent @@ -189,5 +190,6 @@ class InstanceSaveManager ResetTimeQueue m_resetTimeQueue; }; -#define sInstanceSaveMgr ACE_Singleton::instance() +#define sInstanceSaveMgr InstanceSaveManager::instance() + #endif diff --git a/src/server/game/Loot/LootItemStorage.cpp b/src/server/game/Loot/LootItemStorage.cpp index c6d421f1c..f64edb309 100644 --- a/src/server/game/Loot/LootItemStorage.cpp +++ b/src/server/game/Loot/LootItemStorage.cpp @@ -16,6 +16,12 @@ LootItemStorage::~LootItemStorage() { } +LootItemStorage* LootItemStorage::instance() +{ + static LootItemStorage instance; + return &instance; +} + void LootItemStorage::LoadStorageFromDB() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Loot/LootItemStorage.h b/src/server/game/Loot/LootItemStorage.h index ddca0b2db..4ca36f712 100644 --- a/src/server/game/Loot/LootItemStorage.h +++ b/src/server/game/Loot/LootItemStorage.h @@ -6,12 +6,10 @@ Xinef #define ACORE_LOOTITEMSTORAGE_H #include "Common.h" -#include -#include - -#include "ace/Singleton.h" #include "LootMgr.h" #include "Item.h" +#include +#include struct StoredLootItem { @@ -30,13 +28,13 @@ typedef std::unordered_map LootItemContainer; class LootItemStorage { - friend class ACE_Singleton; - private: LootItemStorage(); ~LootItemStorage(); public: + static LootItemStorage* instance(); + void LoadStorageFromDB(); void RemoveEntryFromDB(uint32 containerId, uint32 itemid, uint32 count); @@ -51,5 +49,6 @@ class LootItemStorage LootItemContainer lootItemStore; }; -#define sLootItemStorage ACE_Singleton::instance() +#define sLootItemStorage LootItemStorage::instance() + #endif diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp index 4fc859641..2cbd657e1 100644 --- a/src/server/game/Maps/MapManager.cpp +++ b/src/server/game/Maps/MapManager.cpp @@ -42,6 +42,12 @@ MapManager::~MapManager() { } +MapManager* MapManager::instance() +{ + static MapManager instance; + return &instance; +} + void MapManager::Initialize() { int num_threads(sWorld->getIntConfig(CONFIG_NUMTHREADS)); diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 09b176eb4..8cbd3772a 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -8,7 +8,6 @@ #define ACORE_MAPMANAGER_H #include "Define.h" -#include #include #include "Common.h" #include "Map.h" @@ -22,9 +21,9 @@ struct TransportCreatureProto; class MapManager { - friend class ACE_Singleton; - public: + static MapManager* instance(); + Map* CreateBaseMap(uint32 mapId); Map* FindBaseNonInstanceMap(uint32 mapId) const; Map* CreateMap(uint32 mapId, Player* player); @@ -140,5 +139,7 @@ class MapManager uint32 _nextInstanceId; MapUpdater m_updater; }; -#define sMapMgr ACE_Singleton::instance() + +#define sMapMgr MapManager::instance() + #endif diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp index 1d0325cb1..6dde69bee 100644 --- a/src/server/game/Maps/TransportMgr.cpp +++ b/src/server/game/Maps/TransportMgr.cpp @@ -25,6 +25,12 @@ TransportMgr::TransportMgr() { } TransportMgr::~TransportMgr() { } +TransportMgr* TransportMgr::instance() +{ + static TransportMgr instance; + return &instance; +} + void TransportMgr::Unload() { _transportTemplates.clear(); diff --git a/src/server/game/Maps/TransportMgr.h b/src/server/game/Maps/TransportMgr.h index 1f04847e1..d3139bf2a 100644 --- a/src/server/game/Maps/TransportMgr.h +++ b/src/server/game/Maps/TransportMgr.h @@ -7,7 +7,6 @@ #ifndef TRANSPORTMGR_H #define TRANSPORTMGR_H -#include #include #include "Spline.h" #include "DBCStores.h" @@ -89,65 +88,66 @@ typedef std::map TransportAnimationContainer; class TransportMgr { - friend class ACE_Singleton; - friend void LoadDBCStores(std::string const&); + friend void LoadDBCStores(std::string const&); + +public: + static TransportMgr* instance(); - public: - void Unload(); + void Unload(); - void LoadTransportTemplates(); + void LoadTransportTemplates(); - // Creates a transport using given GameObject template entry - MotionTransport* CreateTransport(uint32 entry, uint32 guid = 0, Map* map = NULL); + // Creates a transport using given GameObject template entry + MotionTransport* CreateTransport(uint32 entry, uint32 guid = 0, Map* map = NULL); - // Spawns all continent transports, used at core startup - void SpawnContinentTransports(); + // Spawns all continent transports, used at core startup + void SpawnContinentTransports(); - // creates all transports for instance - void CreateInstanceTransports(Map* map); + // creates all transports for instance + void CreateInstanceTransports(Map* map); - TransportTemplate const* GetTransportTemplate(uint32 entry) const - { - TransportTemplates::const_iterator itr = _transportTemplates.find(entry); - if (itr != _transportTemplates.end()) - return &itr->second; - return NULL; - } + TransportTemplate const* GetTransportTemplate(uint32 entry) const + { + TransportTemplates::const_iterator itr = _transportTemplates.find(entry); + if (itr != _transportTemplates.end()) + return &itr->second; + return NULL; + } - TransportAnimation const* GetTransportAnimInfo(uint32 entry) const - { - TransportAnimationContainer::const_iterator itr = _transportAnimations.find(entry); - if (itr != _transportAnimations.end()) - return &itr->second; + TransportAnimation const* GetTransportAnimInfo(uint32 entry) const + { + TransportAnimationContainer::const_iterator itr = _transportAnimations.find(entry); + if (itr != _transportAnimations.end()) + return &itr->second; - return NULL; - } + return NULL; + } - private: - TransportMgr(); - ~TransportMgr(); - TransportMgr(TransportMgr const&); - TransportMgr& operator=(TransportMgr const&); + // Generates and precaches a path for transport to avoid generation each time transport instance is created + void GeneratePath(GameObjectTemplate const* goInfo, TransportTemplate* transport); - // Generates and precaches a path for transport to avoid generation each time transport instance is created - void GeneratePath(GameObjectTemplate const* goInfo, TransportTemplate* transport); + void AddPathNodeToTransport(uint32 transportEntry, uint32 timeSeg, TransportAnimationEntry const* node); - void AddPathNodeToTransport(uint32 transportEntry, uint32 timeSeg, TransportAnimationEntry const* node); + void AddPathRotationToTransport(uint32 transportEntry, uint32 timeSeg, TransportRotationEntry const* node) + { + _transportAnimations[transportEntry].Rotations[timeSeg] = node; + } - void AddPathRotationToTransport(uint32 transportEntry, uint32 timeSeg, TransportRotationEntry const* node) - { - _transportAnimations[transportEntry].Rotations[timeSeg] = node; - } +private: + TransportMgr(); + ~TransportMgr(); + TransportMgr(TransportMgr const&); + TransportMgr& operator=(TransportMgr const&); - // Container storing transport templates - TransportTemplates _transportTemplates; + // Container storing transport templates + TransportTemplates _transportTemplates; - // Container storing transport entries to create for instanced maps - TransportInstanceMap _instanceTransports; + // Container storing transport entries to create for instanced maps + TransportInstanceMap _instanceTransports; - TransportAnimationContainer _transportAnimations; + TransportAnimationContainer _transportAnimations; }; -#define sTransportMgr ACE_Singleton::instance() +#define sTransportMgr TransportMgr::instance() #endif // TRANSPORTMGR_H diff --git a/src/server/game/Misc/GameGraveyard.cpp b/src/server/game/Misc/GameGraveyard.cpp index 6321eb26c..b17d8c4c4 100644 --- a/src/server/game/Misc/GameGraveyard.cpp +++ b/src/server/game/Misc/GameGraveyard.cpp @@ -3,6 +3,12 @@ #include "DBCStores.h" #include "Log.h" +Graveyard* Graveyard::instance() +{ + static Graveyard instance; + return &instance; +} + void Graveyard::LoadGraveyardFromDB() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Misc/GameGraveyard.h b/src/server/game/Misc/GameGraveyard.h index 5afade7be..e8bf002e2 100644 --- a/src/server/game/Misc/GameGraveyard.h +++ b/src/server/game/Misc/GameGraveyard.h @@ -3,7 +3,6 @@ #include "Common.h" #include "SharedDefines.h" -#include struct GraveyardStruct { @@ -28,9 +27,8 @@ typedef std::pair; - public: + static Graveyard* instance(); typedef std::unordered_map GraveyardContainer; @@ -53,6 +51,6 @@ private: WGGraveyardContainer GraveyardStore; }; -#define sGraveyard ACE_Singleton::instance() +#define sGraveyard Graveyard::instance() #endif // _GAMEGRAVEYARD_H_ diff --git a/src/server/game/Movement/MovementGenerator.h b/src/server/game/Movement/MovementGenerator.h index a2f104502..683c7fced 100644 --- a/src/server/game/Movement/MovementGenerator.h +++ b/src/server/game/Movement/MovementGenerator.h @@ -8,7 +8,6 @@ #define ACORE_MOVEMENTGENERATOR_H #include "Define.h" -#include #include "ObjectRegistry.h" #include "FactoryHolder.h" #include "Common.h" @@ -82,5 +81,4 @@ struct MovementGeneratorFactory : public SelectableMovement typedef FactoryHolder MovementGeneratorCreator; typedef FactoryHolder::FactoryHolderRegistry MovementGeneratorRegistry; -typedef FactoryHolder::FactoryHolderRepository MovementGeneratorRepository; #endif diff --git a/src/server/game/Movement/Waypoints/WaypointManager.cpp b/src/server/game/Movement/Waypoints/WaypointManager.cpp index 4b39f5334..20397158c 100644 --- a/src/server/game/Movement/Waypoints/WaypointManager.cpp +++ b/src/server/game/Movement/Waypoints/WaypointManager.cpp @@ -27,6 +27,12 @@ WaypointMgr::~WaypointMgr() _waypointStore.clear(); } +WaypointMgr* WaypointMgr::instance() +{ + static WaypointMgr instance; + return &instance; +} + void WaypointMgr::Load() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Movement/Waypoints/WaypointManager.h b/src/server/game/Movement/Waypoints/WaypointManager.h index f467f790d..d5c74f5eb 100644 --- a/src/server/game/Movement/Waypoints/WaypointManager.h +++ b/src/server/game/Movement/Waypoints/WaypointManager.h @@ -7,9 +7,9 @@ #ifndef ACORE_WAYPOINTMANAGER_H #define ACORE_WAYPOINTMANAGER_H -#include -#include +#include "Common.h" #include +#include enum WaypointMoveType { @@ -36,9 +36,9 @@ typedef std::unordered_map WaypointPathContainer; class WaypointMgr { - friend class ACE_Singleton; - public: + static WaypointMgr* instance(); + // Attempts to reload a single path from database void ReloadPath(uint32 id); @@ -52,17 +52,16 @@ class WaypointMgr if (itr != _waypointStore.end()) return &itr->second; - return NULL; + return nullptr; } private: - // Only allow instantiation from ACE_Singleton WaypointMgr(); ~WaypointMgr(); WaypointPathContainer _waypointStore; }; -#define sWaypointMgr ACE_Singleton::instance() +#define sWaypointMgr WaypointMgr::instance() #endif diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp index 1cac258bf..34845fd0e 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp @@ -16,6 +16,12 @@ OutdoorPvPMgr::OutdoorPvPMgr() //sLog->outDebug(LOG_FILTER_OUTDOORPVP, "Instantiating OutdoorPvPMgr"); } +OutdoorPvPMgr* OutdoorPvPMgr::instance() +{ + static OutdoorPvPMgr instance; + return &instance; +} + void OutdoorPvPMgr::Die() { //sLog->outDebug(LOG_FILTER_OUTDOORPVP, "Deleting OutdoorPvPMgr"); diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h index e06dfc5f3..a8b43dd78 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h @@ -10,7 +10,6 @@ #define OUTDOORPVP_OBJECTIVE_UPDATE_INTERVAL 1000 #include "OutdoorPvP.h" -#include class Player; class GameObject; @@ -27,13 +26,13 @@ struct OutdoorPvPData // class to handle player enter / leave / areatrigger / GO use events class OutdoorPvPMgr { - friend class ACE_Singleton; - private: OutdoorPvPMgr(); ~OutdoorPvPMgr() {}; public: + static OutdoorPvPMgr* instance(); + // create outdoor pvp events void InitOutdoorPvP(); @@ -93,6 +92,6 @@ class OutdoorPvPMgr uint32 m_UpdateTimer; }; -#define sOutdoorPvPMgr ACE_Singleton::instance() +#define sOutdoorPvPMgr OutdoorPvPMgr::instance() #endif /*OUTDOOR_PVP_MGR_H_*/ diff --git a/src/server/game/Petitions/PetitionMgr.cpp b/src/server/game/Petitions/PetitionMgr.cpp index 7011c19ab..029c8ead6 100644 --- a/src/server/game/Petitions/PetitionMgr.cpp +++ b/src/server/game/Petitions/PetitionMgr.cpp @@ -17,6 +17,12 @@ PetitionMgr::~PetitionMgr() { } +PetitionMgr* PetitionMgr::instance() +{ + static PetitionMgr instance; + return &instance; +} + void PetitionMgr::LoadPetitions() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Petitions/PetitionMgr.h b/src/server/game/Petitions/PetitionMgr.h index 67476e600..f9acf454c 100644 --- a/src/server/game/Petitions/PetitionMgr.h +++ b/src/server/game/Petitions/PetitionMgr.h @@ -6,7 +6,7 @@ Xinef #define _PETITIONMGR_H #include "Common.h" -#include +#include typedef std::map SignatureMap; @@ -29,13 +29,13 @@ typedef std::map PetitionContainer; class PetitionMgr { - friend class ACE_Singleton; - private: PetitionMgr(); ~PetitionMgr(); public: + static PetitionMgr* instance(); + void LoadPetitions(); void LoadSignatures(); @@ -59,5 +59,6 @@ class PetitionMgr SignatureContainer SignatureStore; }; -#define sPetitionMgr ACE_Singleton::instance() +#define sPetitionMgr PetitionMgr::instance() + #endif diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index e19a21edb..d9e5adefa 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -537,6 +537,12 @@ PoolMgr::PoolMgr() { } +PoolMgr* PoolMgr::instance() +{ + static PoolMgr instance; + return &instance; +} + void PoolMgr::Initialize() { mQuestSearchMap.clear(); diff --git a/src/server/game/Pools/PoolMgr.h b/src/server/game/Pools/PoolMgr.h index b784dca24..9e0803fd8 100644 --- a/src/server/game/Pools/PoolMgr.h +++ b/src/server/game/Pools/PoolMgr.h @@ -8,7 +8,6 @@ #define ACORE_POOLHANDLER_H #include "Define.h" -#include #include "Creature.h" #include "GameObject.h" #include "QuestDef.h" @@ -92,13 +91,13 @@ typedef std::pair class PoolMgr { - friend class ACE_Singleton; - private: PoolMgr(); ~PoolMgr() {}; public: + static PoolMgr* instance(); + void LoadFromDB(); void LoadQuestPools(); void SaveQuestsToDB(bool daily, bool weekly, bool other); @@ -151,7 +150,7 @@ class PoolMgr ActivePoolData mSpawnedData; }; -#define sPoolMgr ACE_Singleton::instance() +#define sPoolMgr PoolMgr::instance() // Method that tell if the creature is part of a pool and return the pool id if yes template<> diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 588eb1cd7..897797f2d 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -172,6 +172,12 @@ ScriptMgr::~ScriptMgr() { } +ScriptMgr* ScriptMgr::instance() +{ + static ScriptMgr instance; + return &instance; +} + void ScriptMgr::Initialize() { AddScripts(); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index cde289097..3ec042f18 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -8,9 +8,6 @@ #define SC_SCRIPTMGR_H #include "Common.h" -#include -#include - #include "ObjectMgr.h" #include "DBCStores.h" #include "QuestDef.h" @@ -21,6 +18,7 @@ #include "DynamicObject.h" #include "ArenaTeam.h" #include "GameEventMgr.h" +#include class AuctionHouseObject; class AuraScript; @@ -1171,13 +1169,9 @@ public: virtual void OnStop(uint16 /*EventID*/) { } }; -// Placed here due to ScriptRegistry::AddScript dependency. -#define sScriptMgr ACE_Singleton::instance() - // Manages registration, loading, and execution of scripts. class ScriptMgr { - friend class ACE_Singleton; friend class ScriptObject; private: @@ -1187,6 +1181,7 @@ class ScriptMgr public: /* Initialization */ + static ScriptMgr* instance(); void Initialize(); void LoadDatabase(); void FillSpellSummary(); @@ -1529,6 +1524,8 @@ class ScriptMgr std::atomic _scheduledScripts; }; +#define sScriptMgr ScriptMgr::instance() + template class ScriptRegistry { diff --git a/src/server/game/Scripting/ScriptSystem.cpp b/src/server/game/Scripting/ScriptSystem.cpp index 3576cdfd8..17eab65bb 100644 --- a/src/server/game/Scripting/ScriptSystem.cpp +++ b/src/server/game/Scripting/ScriptSystem.cpp @@ -11,6 +11,12 @@ ScriptPointVector const SystemMgr::_empty; +SystemMgr* SystemMgr::instance() +{ + static SystemMgr instance; + return &instance; +} + void SystemMgr::LoadScriptWaypoints() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h index a9ec6164f..fafc6066d 100644 --- a/src/server/game/Scripting/ScriptSystem.h +++ b/src/server/game/Scripting/ScriptSystem.h @@ -7,7 +7,6 @@ #define SC_SYSTEM_H #include "ScriptMgr.h" -#include #define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available @@ -49,11 +48,12 @@ typedef std::vector ScriptPointVector; class SystemMgr { - friend class ACE_Singleton; SystemMgr() {} ~SystemMgr() {} public: + static SystemMgr* instance(); + typedef std::unordered_map PointMoveMap; //Database @@ -76,6 +76,6 @@ class SystemMgr static ScriptPointVector const _empty; }; -#define sScriptSystemMgr ACE_Singleton::instance() +#define sScriptSystemMgr SystemMgr::instance() #endif diff --git a/src/server/game/Server/Protocol/PacketLog.cpp b/src/server/game/Server/Protocol/PacketLog.cpp index 51df454d6..6b421f7e1 100644 --- a/src/server/game/Server/Protocol/PacketLog.cpp +++ b/src/server/game/Server/Protocol/PacketLog.cpp @@ -22,6 +22,12 @@ PacketLog::~PacketLog() _file = NULL; } +PacketLog* PacketLog::instance() +{ + static PacketLog instance; + return &instance; +} + void PacketLog::Initialize() { std::string logsDir = sConfigMgr->GetStringDefault("LogsDir", ""); diff --git a/src/server/game/Server/Protocol/PacketLog.h b/src/server/game/Server/Protocol/PacketLog.h index 68983010c..e5aea9635 100644 --- a/src/server/game/Server/Protocol/PacketLog.h +++ b/src/server/game/Server/Protocol/PacketLog.h @@ -8,7 +8,6 @@ #define ACORE_PACKETLOG_H #include "Common.h" -#include enum Direction { @@ -20,13 +19,13 @@ class WorldPacket; class PacketLog { - friend class ACE_Singleton; - private: PacketLog(); ~PacketLog(); public: + static PacketLog* instance(); + void Initialize(); bool CanLogPacket() const { return (_file != NULL); } void LogPacket(WorldPacket const& packet, Direction direction); @@ -35,5 +34,6 @@ class PacketLog FILE* _file; }; -#define sPacketLog ACE_Singleton::instance() +#define sPacketLog PacketLog::instance() + #endif diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp index a53da89cf..2b5b96e61 100644 --- a/src/server/game/Server/WorldSocketMgr.cpp +++ b/src/server/game/Server/WorldSocketMgr.cpp @@ -219,6 +219,12 @@ WorldSocketMgr::~WorldSocketMgr() delete m_Acceptor; } +WorldSocketMgr* WorldSocketMgr::instance() +{ + static WorldSocketMgr instance; + return &instance; +} + int WorldSocketMgr::StartReactiveIO (uint16 port, const char* address) { diff --git a/src/server/game/Server/WorldSocketMgr.h b/src/server/game/Server/WorldSocketMgr.h index d33ec273a..7d0ef78dc 100644 --- a/src/server/game/Server/WorldSocketMgr.h +++ b/src/server/game/Server/WorldSocketMgr.h @@ -15,7 +15,6 @@ #include "Common.h" #include -#include #include class WorldSocket; @@ -27,8 +26,9 @@ class WorldSocketMgr { public: friend class WorldSocket; - friend class ACE_Singleton; + static WorldSocketMgr* instance(); + /// Start network, listen at address:port . int StartNetwork(uint16 port, const char* address); @@ -57,7 +57,7 @@ private: class WorldSocketAcceptor* m_Acceptor; }; -#define sWorldSocketMgr ACE_Singleton::instance() +#define sWorldSocketMgr WorldSocketMgr::instance() #endif /// @} diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index cb8649bde..83366a88c 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -351,6 +351,12 @@ SpellMgr::~SpellMgr() UnloadSpellInfoStore(); } +SpellMgr* SpellMgr::instance() +{ + static SpellMgr instance; + return &instance; +} + /// Some checks for spells, to prevent adding deprecated/broken spells for trainers, spell book, etc bool SpellMgr::ComputeIsSpellValid(SpellInfo const *spellInfo, bool msg) { diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 6ebb2f811..0b6727439 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -9,7 +9,6 @@ // For static or at-server-startup loaded spell data -#include #include "Common.h" #include "SharedDefines.h" #include "Unit.h" @@ -354,8 +353,6 @@ struct SpellStackInfo typedef std::map SpellGroupMap; typedef std::map SpellGroupStackMap; - - struct SpellThreatEntry { int32 flatMod; // flat threat-value for this Spell - default: 0 @@ -603,7 +600,6 @@ typedef std::set TalentAdditionalSet; class SpellMgr { - friend class ACE_Singleton; // Constructors private: SpellMgr(); @@ -611,6 +607,8 @@ class SpellMgr // Accessors (const or static functions) public: + static SpellMgr* instance(); + // Spell correctness for client using static bool ComputeIsSpellValid(SpellInfo const* spellInfo, bool msg = true); static bool IsSpellValid(SpellInfo const* spellInfo); @@ -755,6 +753,6 @@ class SpellMgr TalentAdditionalSet mTalentSpellAdditionalSet; }; -#define sSpellMgr ACE_Singleton::instance() +#define sSpellMgr SpellMgr::instance() #endif diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index d5c2f4206..4a53844e5 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -63,6 +63,12 @@ class PlayerTextBuilder WorldObject const* _target; }; +CreatureTextMgr* CreatureTextMgr::instance() +{ + static CreatureTextMgr instance; + return &instance; +} + void CreatureTextMgr::LoadCreatureTexts() { uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h index 5605b3732..23650a60d 100644 --- a/src/server/game/Texts/CreatureTextMgr.h +++ b/src/server/game/Texts/CreatureTextMgr.h @@ -72,10 +72,11 @@ typedef std::unordered_map CreatureTextRepeatMa class CreatureTextMgr { - friend class ACE_Singleton; CreatureTextMgr() { } public: + static CreatureTextMgr* instance(); + ~CreatureTextMgr() { } void LoadCreatureTexts(); void LoadCreatureTextLocales(); @@ -103,7 +104,7 @@ class CreatureTextMgr LocaleCreatureTextMap mLocaleTextMap; }; -#define sCreatureTextMgr ACE_Singleton::instance() +#define sCreatureTextMgr CreatureTextMgr::instance() template class CreatureTextLocalizer diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 233cc24ce..e87357e31 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -243,6 +243,12 @@ TicketMgr::~TicketMgr() delete itr->second; } +TicketMgr* TicketMgr::instance() +{ + static TicketMgr instance; + return &instance; +} + void TicketMgr::Initialize() { SetStatus(sWorld->getBoolConfig(CONFIG_ALLOW_TICKETS)); } void TicketMgr::ResetTickets() diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h index 29537182d..b0fd8cff7 100644 --- a/src/server/game/Tickets/TicketMgr.h +++ b/src/server/game/Tickets/TicketMgr.h @@ -7,10 +7,8 @@ #ifndef _TICKETMGR_H #define _TICKETMGR_H -#include -#include - #include "ObjectMgr.h" +#include class ChatHandler; @@ -169,17 +167,18 @@ private: std::string _response; std::string _chatLog; // No need to store in db, will be refreshed every session client side }; + typedef std::map GmTicketList; class TicketMgr { - friend class ACE_Singleton; - private: TicketMgr(); ~TicketMgr(); public: + static TicketMgr* instance(); + void LoadTickets(); void LoadSurveys(); @@ -246,6 +245,6 @@ protected: uint64 _lastChange; }; -#define sTicketMgr ACE_Singleton::instance() +#define sTicketMgr TicketMgr::instance() #endif // _TICKETMGR_H diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp index 0e2660603..682938185 100644 --- a/src/server/game/Warden/WardenCheckMgr.cpp +++ b/src/server/game/Warden/WardenCheckMgr.cpp @@ -26,6 +26,12 @@ WardenCheckMgr::~WardenCheckMgr() delete itr->second; } +WardenCheckMgr* WardenCheckMgr::instance() +{ + static WardenCheckMgr instance; + return &instance; +} + void WardenCheckMgr::LoadWardenChecks() { // Check if Warden is enabled by config before loading anything diff --git a/src/server/game/Warden/WardenCheckMgr.h b/src/server/game/Warden/WardenCheckMgr.h index 55e9ec667..9e1c05e7c 100644 --- a/src/server/game/Warden/WardenCheckMgr.h +++ b/src/server/game/Warden/WardenCheckMgr.h @@ -36,11 +36,12 @@ struct WardenCheckResult class WardenCheckMgr { - friend class ACE_Singleton; WardenCheckMgr(); ~WardenCheckMgr(); public: + static WardenCheckMgr* instance(); + // We have a linear key without any gaps, so we use vector for fast access typedef std::vector CheckContainer; typedef std::map CheckResultContainer; @@ -61,6 +62,6 @@ class WardenCheckMgr CheckResultContainer CheckResultStore; }; -#define sWardenCheckMgr ACE_Singleton::instance() +#define sWardenCheckMgr WardenCheckMgr::instance() #endif diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 1c1375fec..0f5e309bc 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -158,6 +158,12 @@ World::~World() //TODO free addSessQueue } +World* World::instance() +{ + static World instance; + return &instance; +} + /// Find a player in a specified zone Player* World::FindPlayerInZone(uint32 zone) { @@ -182,7 +188,7 @@ bool World::IsClosed() const { return m_isClosed; } - + void World::SetClosed(bool val) { m_isClosed = val; diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index e4c44735b..db55b8e77 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -13,7 +13,6 @@ #include "Common.h" #include "Timer.h" -#include #include #include "SharedDefines.h" #include "QueryResult.h" @@ -563,11 +562,13 @@ struct PetitionData class World { public: - static uint32 m_worldLoopCounter; - World(); ~World(); + static World* instance(); + + static uint32 m_worldLoopCounter; + WorldSession* FindSession(uint32 id) const; WorldSession* FindOfflineSession(uint32 id) const; WorldSession* FindOfflineSessionForCharacterGUID(uint32 guidLow) const; @@ -897,7 +898,7 @@ class World std::string m_configFileList; }; - -#define sWorld ACE_Singleton::instance() + +#define sWorld World::instance() #endif /// @} diff --git a/src/server/shared/Realms/RealmList.cpp b/src/server/shared/Realms/RealmList.cpp index 730c4ce41..890423cfa 100644 --- a/src/server/shared/Realms/RealmList.cpp +++ b/src/server/shared/Realms/RealmList.cpp @@ -10,6 +10,12 @@ RealmList::RealmList() : m_UpdateInterval(0), m_NextUpdateTime(time(nullptr)) { } +RealmList* RealmList::instance() +{ + static RealmList instance; + return &instance; +} + // Load the realm list from the database void RealmList::Initialize(uint32 updateInterval) { diff --git a/src/server/shared/Realms/RealmList.h b/src/server/shared/Realms/RealmList.h index 021dd758a..9ebb9c0cc 100644 --- a/src/server/shared/Realms/RealmList.h +++ b/src/server/shared/Realms/RealmList.h @@ -7,10 +7,8 @@ #ifndef _REALMLIST_H #define _REALMLIST_H -#include -#include -#include #include "Common.h" +#include enum RealmFlags { @@ -50,10 +48,10 @@ public: RealmList(); ~RealmList() { } + static RealmList* instance(); + void Initialize(uint32 updateInterval); - void UpdateIfNeed(); - void AddRealm(const Realm& NewRealm) { m_realms[NewRealm.name] = NewRealm; } RealmMap::const_iterator begin() const { return m_realms.begin(); } @@ -69,6 +67,6 @@ private: time_t m_NextUpdateTime; }; -#define sRealmList ACE_Singleton::instance() +#define sRealmList RealmList::instance() #endif diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 75508a69b..d4250931e 100644 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -8,8 +8,6 @@ \ingroup Trinityd */ -#include - #include "Common.h" #include "GitRevision.h" #include "SignalHandler.h" @@ -17,9 +15,9 @@ #include "WorldRunnable.h" #include "WorldSocket.h" #include "WorldSocketMgr.h" -#include "Configuration/Config.h" -#include "Database/DatabaseEnv.h" -#include "Database/DatabaseWorkerPool.h" +#include "Config.h" +#include "DatabaseEnv.h" +#include "DatabaseWorkerPool.h" #include "CliRunnable.h" #include "Log.h" @@ -30,9 +28,9 @@ #include "Util.h" #include "RealmList.h" #include "ScriptMgr.h" - #include "BigNumber.h" #include "OpenSSLCrypto.h" +#include #ifdef _WIN32 #include "ServiceWin32.h" @@ -107,6 +105,12 @@ public: } }; +Master* Master::instance() +{ + static Master instance; + return &instance; +} + /// Main function int Master::Run() { diff --git a/src/server/worldserver/Master.h b/src/server/worldserver/Master.h index c303a925e..70a559911 100644 --- a/src/server/worldserver/Master.h +++ b/src/server/worldserver/Master.h @@ -17,6 +17,7 @@ class Master { public: + static Master* instance(); int Run(); private: @@ -26,7 +27,7 @@ class Master void ClearOnlineAccounts(); }; -#define sMaster ACE_Singleton::instance() +#define sMaster Master::instance() #endif