mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Events: refactored battleground holiday assignments.
Instead of going with shitty bitmasks we now accept plain battleground ids instead
This commit is contained in:
committed by
Peter Keresztes Schmidt
parent
7987ec103e
commit
8a82403400
12
sql/updates/world/3.3.5/2020_07_07_01_world.sql
Normal file
12
sql/updates/world/3.3.5/2020_07_07_01_world.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
ALTER TABLE `game_event_battleground_holiday`
|
||||
CHANGE `eventEntry` `EventEntry` TINYINT(3) UNSIGNED NOT NULL COMMENT 'game_event EventEntry identifier',
|
||||
CHANGE `bgflag` `BattlegroundID` INT(3) UNSIGNED DEFAULT 0 NOT NULL;
|
||||
|
||||
TRUNCATE TABLE `game_event_battleground_holiday`;
|
||||
INSERT INTO `game_event_battleground_holiday` (`EventEntry`, `BattlegroundID`) VALUES
|
||||
(18, 1),
|
||||
(19, 2),
|
||||
(20, 3),
|
||||
(21, 7),
|
||||
(53, 9),
|
||||
(54, 30);
|
||||
@@ -828,12 +828,17 @@ void BattlegroundMgr::ToggleArenaTesting()
|
||||
sWorld->SendWorldText(m_ArenaTesting ? LANG_DEBUG_ARENA_ON : LANG_DEBUG_ARENA_OFF);
|
||||
}
|
||||
|
||||
void BattlegroundMgr::SetHolidayWeekends(uint32 mask)
|
||||
void BattlegroundMgr::ResetHolidays()
|
||||
{
|
||||
// The current code supports battlegrounds up to BattlegroundTypeId(31)
|
||||
for (uint32 bgtype = 1; bgtype < MAX_BATTLEGROUND_TYPE_ID && bgtype < 32; ++bgtype)
|
||||
if (Battleground* bg = GetBattlegroundTemplate(BattlegroundTypeId(bgtype)))
|
||||
bg->SetHoliday((mask & (1 << bgtype)) != 0);
|
||||
for (uint32 i = BATTLEGROUND_AV; i < MAX_BATTLEGROUND_TYPE_ID; i++)
|
||||
if (Battleground* bg = GetBattlegroundTemplate(BattlegroundTypeId(i)))
|
||||
bg->SetHoliday(false);
|
||||
}
|
||||
|
||||
void BattlegroundMgr::SetHolidayActive(uint32 battlegroundId)
|
||||
{
|
||||
if (Battleground* bg = GetBattlegroundTemplate(BattlegroundTypeId(battlegroundId)))
|
||||
bg->SetHoliday(true);
|
||||
}
|
||||
|
||||
void BattlegroundMgr::ScheduleQueueUpdate(uint32 arenaMatchmakerRating, uint8 arenaType, BattlegroundQueueTypeId bgQueueTypeId, BattlegroundTypeId bgTypeId, BattlegroundBracketId bracket_id)
|
||||
|
||||
@@ -105,7 +105,8 @@ class TC_GAME_API BattlegroundMgr
|
||||
void ToggleArenaTesting();
|
||||
void ToggleTesting();
|
||||
|
||||
void SetHolidayWeekends(uint32 mask);
|
||||
void ResetHolidays();
|
||||
void SetHolidayActive(uint32 battlegroundId);
|
||||
|
||||
bool isArenaTesting() const { return m_ArenaTesting; }
|
||||
bool isTesting() const { return m_Testing; }
|
||||
|
||||
@@ -866,12 +866,12 @@ void GameEventMgr::LoadFromDB()
|
||||
}
|
||||
}
|
||||
|
||||
TC_LOG_INFO("server.loading", "Loading Game Event Battleground Data...");
|
||||
TC_LOG_INFO("server.loading", "Loading Game Event Battleground Holiday Data...");
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// 0 1
|
||||
QueryResult result = WorldDatabase.Query("SELECT eventEntry, bgflag FROM game_event_battleground_holiday");
|
||||
// 0 1
|
||||
QueryResult result = WorldDatabase.Query("SELECT EventEntry, BattlegroundID FROM game_event_battleground_holiday");
|
||||
|
||||
if (!result)
|
||||
TC_LOG_INFO("server.loading", ">> Loaded 0 battleground holidays in game events. DB table `game_event_battleground_holiday` is empty.");
|
||||
@@ -1232,10 +1232,10 @@ void GameEventMgr::UpdateEventNPCFlags(uint16 event_id)
|
||||
|
||||
void GameEventMgr::UpdateBattlegroundSettings()
|
||||
{
|
||||
uint32 mask = 0;
|
||||
for (ActiveEvents::const_iterator itr = m_ActiveEvents.begin(); itr != m_ActiveEvents.end(); ++itr)
|
||||
mask |= mGameEventBattlegroundHolidays[*itr];
|
||||
sBattlegroundMgr->SetHolidayWeekends(mask);
|
||||
sBattlegroundMgr->ResetHolidays();
|
||||
|
||||
for (uint16 activeEventId : m_ActiveEvents)
|
||||
sBattlegroundMgr->SetHolidayActive(mGameEventBattlegroundHolidays[activeEventId]);
|
||||
}
|
||||
|
||||
void GameEventMgr::UpdateEventNPCVendor(uint16 event_id, bool activate)
|
||||
@@ -1843,8 +1843,8 @@ bool IsHolidayActive(HolidayIds id)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsEventActive(uint16 event_id)
|
||||
bool IsEventActive(uint16 eventId)
|
||||
{
|
||||
GameEventMgr::ActiveEvents const& ae = sGameEventMgr->GetActiveEventList();
|
||||
return ae.find(event_id) != ae.end();
|
||||
return ae.find(eventId) != ae.end();
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ class TC_GAME_API GameEventMgr
|
||||
typedef std::pair<ObjectGuid::LowType /*guid*/, uint32 /*npcflag*/> GuidNPCFlagPair;
|
||||
typedef std::list<GuidNPCFlagPair> NPCFlagList;
|
||||
typedef std::vector<NPCFlagList> GameEventNPCFlagMap;
|
||||
typedef std::vector<uint32> GameEventBitmask;
|
||||
typedef std::vector<uint32> GameEventBattlegroundMap;
|
||||
GameEventQuestMap mGameEventCreatureQuests;
|
||||
GameEventQuestMap mGameEventGameObjectQuests;
|
||||
GameEventNPCVendorMap mGameEventVendors;
|
||||
@@ -174,7 +174,7 @@ class TC_GAME_API GameEventMgr
|
||||
//GameEventGuidMap mGameEventGameobjectGuids;
|
||||
GameEventIdMap mGameEventPoolIds;
|
||||
GameEventDataMap mGameEvent;
|
||||
GameEventBitmask mGameEventBattlegroundHolidays;
|
||||
GameEventBattlegroundMap mGameEventBattlegroundHolidays;
|
||||
QuestIdToEventConditionMap mQuestToEventConditions;
|
||||
GameEventNPCFlagMap mGameEventNPCFlags;
|
||||
ActiveEvents m_ActiveEvents;
|
||||
@@ -189,6 +189,6 @@ class TC_GAME_API GameEventMgr
|
||||
#define sGameEventMgr GameEventMgr::instance()
|
||||
|
||||
TC_GAME_API bool IsHolidayActive(HolidayIds id);
|
||||
TC_GAME_API bool IsEventActive(uint16 event_id);
|
||||
TC_GAME_API bool IsEventActive(uint16 eventId);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user