From 8d54facbfa70028540244d4c880d9f78c2944f40 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 17 Oct 2021 11:44:23 +0200 Subject: [PATCH] fix(Core/Battlegrounds): Fixed timed announcement system for CrossfactionBG module. (#8521) - Closes #6637 --- .../game/Battlegrounds/BattlegroundQueue.cpp | 24 ++++++++++++++++++- .../game/Battlegrounds/BattlegroundQueue.h | 7 ++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 658a063ad..8b06d5a5f 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -47,6 +47,7 @@ BattlegroundQueue::BattlegroundQueue() : m_bgTypeId(BATTLEGROUND_TYPE_NONE), m_a } _queueAnnouncementTimer.fill(-1); + _queueAnnouncementCrossfactioned = false; } BattlegroundQueue::~BattlegroundQueue() @@ -955,7 +956,17 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 diff, BattlegroundBracket 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) { _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); } +void BattlegroundQueue::SetQueueAnnouncementTimer(uint32 bracketId, int32 timer) +{ + _queueAnnouncementTimer[bracketId] = timer; + _queueAnnouncementCrossfactioned = true; +} + +int32 BattlegroundQueue::GetQueueAnnouncementTimer(uint32 bracketId) const +{ + return _queueAnnouncementTimer[bracketId]; +} + /*********************************************************/ /*** BATTLEGROUND QUEUE EVENTS ***/ /*********************************************************/ diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h index 0c4c0b55a..89bd67326 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.h +++ b/src/server/game/Battlegrounds/BattlegroundQueue.h @@ -56,6 +56,8 @@ enum BattlegroundQueueGroupTypes BG_QUEUE_NORMAL_ALLIANCE, BG_QUEUE_NORMAL_HORDE, + BG_QUEUE_CFBG, + BG_QUEUE_MAX = 10 }; @@ -128,8 +130,8 @@ public: ArenaType GetArenaType() { return m_arenaType; } BattlegroundTypeId GetBGTypeID() { return m_bgTypeId; } - void SetQueueAnnouncementTimer(uint32 bracketId, int32 timer) { _queueAnnouncementTimer[bracketId] = timer; } - [[nodiscard]] int32 GetQueueAnnouncementTimer(uint32 bracketId) { return _queueAnnouncementTimer[bracketId]; } + void SetQueueAnnouncementTimer(uint32 bracketId, int32 timer); + [[nodiscard]] int32 GetQueueAnnouncementTimer(uint32 bracketId) const; private: BattlegroundTypeId m_bgTypeId; @@ -141,6 +143,7 @@ private: EventProcessor m_events; std::array _queueAnnouncementTimer; + bool _queueAnnouncementCrossfactioned; }; /*