fix(Core/Disables): Optimize DisableMgr container (#21416)
This commit is contained in:
parent
b17d69b33c
commit
5421f13c13
@ -28,7 +28,7 @@
|
||||
#include "VMapMgr2.h"
|
||||
#include "World.h"
|
||||
|
||||
std::map<DisableType, std::map<uint32, DisableData>> DisableMgr::m_DisableMap;
|
||||
DisableMgr::DisableMap DisableMgr::m_DisableMap;
|
||||
|
||||
DisableMgr::DisableMgr() {}
|
||||
DisableMgr::~DisableMgr() {}
|
||||
@ -44,10 +44,8 @@ void DisableMgr::LoadDisables()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// reload case
|
||||
for (DisableMap::iterator itr = m_DisableMap.begin(); itr != m_DisableMap.end(); ++itr)
|
||||
itr->second.clear();
|
||||
|
||||
m_DisableMap.clear();
|
||||
for (DisableTypeMap& disableTypeMap : m_DisableMap)
|
||||
disableTypeMap.clear();
|
||||
|
||||
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 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)
|
||||
{
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
#include "Define.h"
|
||||
#include "Map.h"
|
||||
|
||||
class Unit;
|
||||
|
||||
enum DisableType
|
||||
@ -68,19 +69,19 @@ public:
|
||||
static DisableMgr* instance();
|
||||
|
||||
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);
|
||||
static bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0);
|
||||
void CheckQuestDisables();
|
||||
static bool IsVMAPDisabledFor(uint32 entry, uint8 flags);
|
||||
static bool IsPathfindingEnabled(Map const* map);
|
||||
|
||||
private:
|
||||
// single disables here with optional data
|
||||
typedef std::map<uint32, DisableData> DisableTypeMap;
|
||||
typedef std::unordered_map<uint32, DisableData> DisableTypeMap;
|
||||
// global disable map by source
|
||||
typedef std::map<DisableType, DisableTypeMap> DisableMap;
|
||||
typedef std::array<DisableTypeMap, MAX_DISABLE_TYPES> DisableMap;
|
||||
|
||||
private:
|
||||
static DisableMap m_DisableMap;
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user