fix(Core/Disables): Optimize DisableMgr container (#21416)
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user