feat(Core/Disables): Implement DISABLE_TYPE_GAME_EVENT (#9099)

This commit is contained in:
Skjalf
2021-11-10 15:06:46 -03:00
committed by GitHub
parent c519dc5738
commit 855f098a57
5 changed files with 60 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
*/
#include "DisableMgr.h"
#include "GameEventMgr.h"
#include "MMapFactory.h"
#include "ObjectMgr.h"
#include "OutdoorPvP.h"
@@ -41,7 +42,7 @@ namespace DisableMgr
DisableMap m_DisableMap;
uint8 MAX_DISABLE_TYPES = 9;
uint8 MAX_DISABLE_TYPES = 10;
}
void LoadDisables()
@@ -237,6 +238,31 @@ namespace DisableMgr
}
break;
}
case DISABLE_TYPE_GAME_EVENT:
{
GameEventMgr::GameEventDataMap const& events = sGameEventMgr->GetEventMap();
if (entry < 1 || entry >= events.size())
{
LOG_ERROR("disable", "Event entry %u from `disables` does not exist, skipped.", entry);
continue;
}
GameEventData const& eventData = events[entry];
if (!eventData.isValid())
{
LOG_ERROR("disable", "Event entry %u from `disables` does not exist, skipped.", entry);
continue;
}
GameEventMgr::ActiveEvents const& activeEvents = sGameEventMgr->GetActiveEventList();
if (activeEvents.find(entry) != activeEvents.end())
{
sGameEventMgr->StopEvent(entry);
LOG_INFO("disable", "Event entry %u was stopped because it has been disabled.", entry);
}
break;
}
default:
break;
}
@@ -366,6 +392,8 @@ namespace DisableMgr
return flags & itr->second.flags;
case DISABLE_TYPE_GO_LOS:
return true;
case DISABLE_TYPE_GAME_EVENT:
return true;
}
return false;