fix(Core/Disables): Optimize DisableMgr container (#21416)

This commit is contained in:
Takenbacon
2025-02-12 05:40:04 -08:00
committed by GitHub
parent b17d69b33c
commit 5421f13c13
2 changed files with 9 additions and 10 deletions
+4 -6
View File
@@ -28,7 +28,7 @@
#include "VMapMgr2.h" #include "VMapMgr2.h"
#include "World.h" #include "World.h"
std::map<DisableType, std::map<uint32, DisableData>> DisableMgr::m_DisableMap; DisableMgr::DisableMap DisableMgr::m_DisableMap;
DisableMgr::DisableMgr() {} DisableMgr::DisableMgr() {}
DisableMgr::~DisableMgr() {} DisableMgr::~DisableMgr() {}
@@ -44,10 +44,8 @@ void DisableMgr::LoadDisables()
uint32 oldMSTime = getMSTime(); uint32 oldMSTime = getMSTime();
// reload case // reload case
for (DisableMap::iterator itr = m_DisableMap.begin(); itr != m_DisableMap.end(); ++itr) for (DisableTypeMap& disableTypeMap : m_DisableMap)
itr->second.clear(); disableTypeMap.clear();
m_DisableMap.clear();
QueryResult result = WorldDatabase.Query("SELECT sourceType, entry, flags, params_0, params_1 FROM disables"); QueryResult result = WorldDatabase.Query("SELECT sourceType, entry, flags, params_0, params_1 FROM disables");
@@ -99,7 +97,7 @@ void DisableMgr::LoadDisables()
* @param param0 MapId if DISABLE_TYPE_SPELL used, 0 for all maps. * @param param0 MapId if DISABLE_TYPE_SPELL used, 0 for all maps.
* @param param1 AreaId if DISABLE_TYPE_SPELL used, 0 for all areas. * @param param1 AreaId if DISABLE_TYPE_SPELL used, 0 for all areas.
*/ */
void DisableMgr::AddDisable(DisableType type, uint32 entry, uint8 flags, std::string param0, std::string param1) void DisableMgr::AddDisable(DisableType type, uint32 entry, uint8 flags, std::string const& param0, std::string const& param1)
{ {
if (type >= MAX_DISABLE_TYPES) if (type >= MAX_DISABLE_TYPES)
{ {
+5 -4
View File
@@ -20,6 +20,7 @@
#include "Define.h" #include "Define.h"
#include "Map.h" #include "Map.h"
class Unit; class Unit;
enum DisableType enum DisableType
@@ -68,19 +69,19 @@ public:
static DisableMgr* instance(); static DisableMgr* instance();
void LoadDisables(); void LoadDisables();
void AddDisable(DisableType type, uint32 entry, uint8 flags, std::string param0, std::string param1); void AddDisable(DisableType type, uint32 entry, uint8 flags, std::string const& param0, std::string const& param1);
bool HandleDisableType(DisableType type, uint32 entry, uint8 flags, std::string const& params_0, std::string const& params_1, DisableData& data); bool HandleDisableType(DisableType type, uint32 entry, uint8 flags, std::string const& params_0, std::string const& params_1, DisableData& data);
static bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0); static bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0);
void CheckQuestDisables(); void CheckQuestDisables();
static bool IsVMAPDisabledFor(uint32 entry, uint8 flags); static bool IsVMAPDisabledFor(uint32 entry, uint8 flags);
static bool IsPathfindingEnabled(Map const* map); static bool IsPathfindingEnabled(Map const* map);
private:
// single disables here with optional data // single disables here with optional data
typedef std::map<uint32, DisableData> DisableTypeMap; typedef std::unordered_map<uint32, DisableData> DisableTypeMap;
// global disable map by source // global disable map by source
typedef std::map<DisableType, DisableTypeMap> DisableMap; typedef std::array<DisableTypeMap, MAX_DISABLE_TYPES> DisableMap;
private:
static DisableMap m_DisableMap; static DisableMap m_DisableMap;
}; };