fix(Core/Battlegrounds): Fixed timed announcement system for CrossfactionBG module. (#8521)

- Closes #6637
This commit is contained in:
UltraNix
2021-10-17 11:44:23 +02:00
committed by GitHub
parent 8c126075ff
commit 8d54facbfa
2 changed files with 28 additions and 3 deletions
@@ -47,6 +47,7 @@ BattlegroundQueue::BattlegroundQueue() : m_bgTypeId(BATTLEGROUND_TYPE_NONE), m_a
} }
_queueAnnouncementTimer.fill(-1); _queueAnnouncementTimer.fill(-1);
_queueAnnouncementCrossfactioned = false;
} }
BattlegroundQueue::~BattlegroundQueue() BattlegroundQueue::~BattlegroundQueue()
@@ -955,7 +956,17 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 diff, BattlegroundBracket
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMED)) if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_TIMED))
{ {
uint32 qPlayers = GetPlayersCountInGroupsQueue(bracket_id, BG_QUEUE_NORMAL_HORDE) + GetPlayersCountInGroupsQueue(bracket_id, BG_QUEUE_NORMAL_ALLIANCE); uint32 qPlayers = 0;
if (_queueAnnouncementCrossfactioned)
{
qPlayers = GetPlayersCountInGroupsQueue(bracket_id, BG_QUEUE_CFBG);
}
else
{
qPlayers = GetPlayersCountInGroupsQueue(bracket_id, BG_QUEUE_NORMAL_HORDE) + GetPlayersCountInGroupsQueue(bracket_id, BG_QUEUE_NORMAL_ALLIANCE);
}
if (!qPlayers) if (!qPlayers)
{ {
_queueAnnouncementTimer[bracket_id] = -1; _queueAnnouncementTimer[bracket_id] = -1;
@@ -1150,6 +1161,17 @@ void BattlegroundQueue::SendExitMessageArenaQueue(GroupQueueInfo* ginfo)
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating); sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
} }
void BattlegroundQueue::SetQueueAnnouncementTimer(uint32 bracketId, int32 timer)
{
_queueAnnouncementTimer[bracketId] = timer;
_queueAnnouncementCrossfactioned = true;
}
int32 BattlegroundQueue::GetQueueAnnouncementTimer(uint32 bracketId) const
{
return _queueAnnouncementTimer[bracketId];
}
/*********************************************************/ /*********************************************************/
/*** BATTLEGROUND QUEUE EVENTS ***/ /*** BATTLEGROUND QUEUE EVENTS ***/
/*********************************************************/ /*********************************************************/
@@ -56,6 +56,8 @@ enum BattlegroundQueueGroupTypes
BG_QUEUE_NORMAL_ALLIANCE, BG_QUEUE_NORMAL_ALLIANCE,
BG_QUEUE_NORMAL_HORDE, BG_QUEUE_NORMAL_HORDE,
BG_QUEUE_CFBG,
BG_QUEUE_MAX = 10 BG_QUEUE_MAX = 10
}; };
@@ -128,8 +130,8 @@ public:
ArenaType GetArenaType() { return m_arenaType; } ArenaType GetArenaType() { return m_arenaType; }
BattlegroundTypeId GetBGTypeID() { return m_bgTypeId; } BattlegroundTypeId GetBGTypeID() { return m_bgTypeId; }
void SetQueueAnnouncementTimer(uint32 bracketId, int32 timer) { _queueAnnouncementTimer[bracketId] = timer; } void SetQueueAnnouncementTimer(uint32 bracketId, int32 timer);
[[nodiscard]] int32 GetQueueAnnouncementTimer(uint32 bracketId) { return _queueAnnouncementTimer[bracketId]; } [[nodiscard]] int32 GetQueueAnnouncementTimer(uint32 bracketId) const;
private: private:
BattlegroundTypeId m_bgTypeId; BattlegroundTypeId m_bgTypeId;
@@ -141,6 +143,7 @@ private:
EventProcessor m_events; EventProcessor m_events;
std::array<int32, BG_BRACKET_ID_LAST> _queueAnnouncementTimer; std::array<int32, BG_BRACKET_ID_LAST> _queueAnnouncementTimer;
bool _queueAnnouncementCrossfactioned;
}; };
/* /*