From 34077115a5de7d640517caf8136f8648f8f195e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Thu, 18 Jun 2020 12:04:56 +0200 Subject: [PATCH] refactor(Core/BG): improvements to the queue system (#3091) Co-authored-by: Yehonal --- .../game/Battlegrounds/BattlegroundQueue.cpp | 93 +++++++++---------- .../game/Battlegrounds/BattlegroundQueue.h | 22 ++--- 2 files changed, 54 insertions(+), 61 deletions(-) diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 6db6cc82e..68e21f31a 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -14,7 +14,6 @@ #include "Language.h" #include "ObjectMgr.h" #include "Player.h" -#include "ChannelMgr.h" #include "Channel.h" #include "ScriptMgr.h" #include @@ -43,13 +42,13 @@ BattlegroundQueue::~BattlegroundQueue() m_events.KillAllEvents(false); m_QueuedPlayers.clear(); - for (int i = 0; i < MAX_BATTLEGROUND_BRACKETS; ++i) + for (auto & m_QueuedGroup : m_QueuedGroups) { - for (uint32 j = 0; j < BG_QUEUE_MAX; ++j) + for (auto & j : m_QueuedGroup) { - for (GroupsQueueType::iterator itr = m_QueuedGroups[i][j].begin(); itr != m_QueuedGroups[i][j].end(); ++itr) - delete (*itr); - m_QueuedGroups[i][j].clear(); + for (auto & itr : j) + delete itr; + j.clear(); } } } @@ -73,8 +72,8 @@ bool BattlegroundQueue::SelectionPool::KickGroup(const uint32 size) // find last group with proper size or largest bool foundProper = false; - GroupsQueueType::iterator groupToKick = SelectedGroups.begin(); - for (GroupsQueueType::iterator itr = groupToKick; itr != SelectedGroups.end(); ++itr) + auto groupToKick = SelectedGroups.begin(); + for (auto itr = groupToKick; itr != SelectedGroups.end(); ++itr) { // if proper size - overwrite to kick last one if (abs(int32((*itr)->Players.size()) - (int32)size) <= 1) @@ -107,9 +106,7 @@ bool BattlegroundQueue::SelectionPool::AddGroup(GroupQueueInfo * ginfo, uint32 d PlayerCount += ginfo->Players.size(); return true; } - if (PlayerCount < desiredCount) - return true; - return false; + return PlayerCount < desiredCount; } /*********************************************************/ @@ -122,7 +119,7 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player * leader, Group * grp, PvPDif BattlegroundBracketId bracketId = bracketEntry->GetBracketId(); // create new ginfo - GroupQueueInfo* ginfo = new GroupQueueInfo; + auto* ginfo = new GroupQueueInfo; ginfo->BgTypeId = m_bgTypeId; ginfo->ArenaType = m_arenaType; ginfo->ArenaTeamId = arenateamid; @@ -162,7 +159,7 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player * leader, Group * grp, PvPDif //add players from group to ginfo if (grp) { - for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next()) + for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) { Player* member = itr->GetSource(); if (!member) @@ -252,12 +249,12 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu if (Player * p = ObjectAccessor::FindPlayerInOrOutOfWorld(guid)) { WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, NULL, playerQueueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, nullptr, playerQueueSlot, STATUS_NONE, 0, 0, 0, TEAM_NEUTRAL); p->GetSession()->SendPacket(&data); } //remove player from map, if he's there - QueuedPlayersMap::iterator itr = m_QueuedPlayers.find(guid); + auto itr = m_QueuedPlayers.find(guid); if (itr == m_QueuedPlayers.end()) { ABORT(); @@ -270,8 +267,8 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu uint32 _groupType = groupInfo->_groupType; // find iterator - GroupsQueueType::iterator group_itr = m_QueuedGroups[_bracketId][_groupType].end(); - for (GroupsQueueType::iterator k = m_QueuedGroups[_bracketId][_groupType].begin(); k != m_QueuedGroups[_bracketId][_groupType].end(); ++k) + auto group_itr = m_QueuedGroups[_bracketId][_groupType].end(); + for (auto k = m_QueuedGroups[_bracketId][_groupType].begin(); k != m_QueuedGroups[_bracketId][_groupType].end(); ++k) if ((*k) == groupInfo) { group_itr = k; @@ -286,7 +283,7 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu } // remove player from group queue info - std::set::iterator pitr = groupInfo->Players.find(guid); + auto pitr = groupInfo->Players.find(guid); ASSERT(pitr != groupInfo->Players.end()); if (pitr != groupInfo->Players.end()) groupInfo->Players.erase(pitr); @@ -347,20 +344,20 @@ void BattlegroundQueue::AddEvent(BasicEvent * Event, uint64 e_time) bool BattlegroundQueue::IsPlayerInvitedToRatedArena(uint64 pl_guid) { - QueuedPlayersMap::const_iterator qItr = m_QueuedPlayers.find(pl_guid); + auto qItr = m_QueuedPlayers.find(pl_guid); return qItr != m_QueuedPlayers.end() && qItr->second->IsRated && qItr->second->IsInvitedToBGInstanceGUID; } //returns true when player pl_guid is in queue and is invited to bgInstanceGuid bool BattlegroundQueue::IsPlayerInvited(uint64 pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime) { - QueuedPlayersMap::const_iterator qItr = m_QueuedPlayers.find(pl_guid); + auto qItr = m_QueuedPlayers.find(pl_guid); return qItr != m_QueuedPlayers.end() && qItr->second->IsInvitedToBGInstanceGUID == bgInstanceGuid && qItr->second->RemoveInviteTime == removeTime; } bool BattlegroundQueue::GetPlayerGroupInfoData(uint64 guid, GroupQueueInfo * ginfo) { - QueuedPlayersMap::const_iterator qItr = m_QueuedPlayers.find(guid); + auto qItr = m_QueuedPlayers.find(guid); if (qItr == m_QueuedPlayers.end()) return false; *ginfo = *(qItr->second); @@ -384,11 +381,12 @@ void BattlegroundQueue::FillPlayersToBG(Battleground* bg, const int32 aliFree, c return; // ally: at first fill as much as possible - GroupsQueueType::const_iterator Ali_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].begin(); + auto Ali_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].begin(); for (; Ali_itr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE].end() && m_SelectionPools[TEAM_ALLIANCE].AddGroup((*Ali_itr), aliFree); ++Ali_itr); + // horde: at first fill as much as possible - GroupsQueueType::const_iterator Horde_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].begin(); + auto Horde_itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].begin(); for (; Horde_itr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_HORDE].end() && m_SelectionPools[TEAM_HORDE].AddGroup((*Horde_itr), hordeFree); ++Horde_itr); // calculate free space after adding @@ -467,11 +465,11 @@ void BattlegroundQueue::FillPlayersToBGWithSpecific(Battleground* bg, const int3 m_QueuedBoth[TEAM_HORDE].insert(m_QueuedBoth[TEAM_HORDE].end(), m_QueuedGroups[thisBracketId][BG_QUEUE_NORMAL_HORDE].begin(), m_QueuedGroups[thisBracketId][BG_QUEUE_NORMAL_HORDE].end()); // ally: at first fill as much as possible - GroupsQueueType::const_iterator Ali_itr = m_QueuedBoth[TEAM_ALLIANCE].begin(); + auto Ali_itr = m_QueuedBoth[TEAM_ALLIANCE].begin(); for (; Ali_itr != m_QueuedBoth[TEAM_ALLIANCE].end() && m_SelectionPools[TEAM_ALLIANCE].AddGroup((*Ali_itr), aliFree); ++Ali_itr); // horde: at first fill as much as possible - GroupsQueueType::const_iterator Horde_itr = m_QueuedBoth[TEAM_HORDE].begin(); + auto Horde_itr = m_QueuedBoth[TEAM_HORDE].begin(); for (; Horde_itr != m_QueuedBoth[TEAM_HORDE].end() && m_SelectionPools[TEAM_HORDE].AddGroup((*Horde_itr), hordeFree); ++Horde_itr); // calculate free space after adding @@ -508,7 +506,7 @@ void BattlegroundQueue::FillPlayersToBGWithSpecific(Battleground* bg, const int3 // kick alliance, returns true if kicked more than needed, so then try to fill up if (m_SelectionPools[TEAM_ALLIANCE].KickGroup(hordeDiff - aliDiff)) for (; Ali_itr != m_QueuedBoth[TEAM_ALLIANCE].end() && m_SelectionPools[TEAM_ALLIANCE].AddGroup((*Ali_itr), aliFree >= hordeDiff ? aliFree - hordeDiff : 0); ++Ali_itr); - } + } else // if results in more horde players than alliance: { // no more horde in pool, invite whatever we can from alliance @@ -566,7 +564,7 @@ bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint for (uint32 i = 0; i < BG_TEAMS_COUNT; i++) if (!m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].empty()) - for (GroupsQueueType::iterator itr = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].begin(); itr != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].end(); ) + for (auto itr = m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].begin(); itr != m_QueuedGroups[bracket_id][BG_QUEUE_PREMADE_ALLIANCE + i].end(); ) { if (!(*itr)->IsInvitedToBGInstanceGUID && ((*itr)->JoinTime < time_before || (*itr)->Players.size() < MinPlayersPerTeam)) { @@ -623,7 +621,7 @@ bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracke m_SelectionPools[TEAM_HORDE].Init(); // fill one queue to both selection pools - for (GroupsQueueType::const_iterator itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); itr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++itr) + for (auto itr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); itr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++itr) for (uint32 j = 0; j < BG_TEAMS_COUNT; j++) // try to add this group to both pools if (m_SelectionPools[TEAM_ALLIANCE + j].GetPlayerCount() < minPlayersPerTeam) // if this pool is not full if (m_SelectionPools[TEAM_ALLIANCE + j].AddGroup((*itr), minPlayersPerTeam)) // successfully added @@ -634,7 +632,7 @@ bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracke // need to move groups from one pool to another queue (for another faction) TeamId wrongTeamId = (i == 0 ? TEAM_HORDE : TEAM_ALLIANCE); - for (GroupsQueueType::iterator pitr = m_SelectionPools[wrongTeamId].SelectedGroups.begin(); pitr != m_SelectionPools[wrongTeamId].SelectedGroups.end(); ++pitr) + for (auto pitr = m_SelectionPools[wrongTeamId].SelectedGroups.begin(); pitr != m_SelectionPools[wrongTeamId].SelectedGroups.end(); ++pitr) { // update internal GroupQueueInfo data (*pitr)->teamId = wrongTeamId; @@ -644,7 +642,7 @@ bool BattlegroundQueue::CheckSkirmishForSameFaction(BattlegroundBracketId bracke m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + wrongTeamId].push_front(*pitr); // remove GroupQueueInfo from old queue - for (GroupsQueueType::iterator qitr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); qitr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++qitr) + for (auto qitr = m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].begin(); qitr != m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].end(); ++qitr) if (*qitr == *pitr) { m_QueuedGroups[bracket_id][BG_QUEUE_NORMAL_ALLIANCE + i].erase(qitr); @@ -691,19 +689,17 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id BattlegroundNeedSet bgsToCheck; // sort from most needing (most empty) to least needing using a std::set with functor - for (BattlegroundContainer::const_iterator itr = bgList.begin(); itr != bgList.end(); ++itr) + for (auto itr : bgList) { - Battleground* bg = itr->second; + Battleground* bg = itr.second; if (!BattlegroundMgr::IsArenaType(bg->GetBgTypeID()) && (bg->GetBgTypeID(true) == m_bgTypeId || m_bgTypeId == BATTLEGROUND_RB) && bg->HasFreeSlots() && bg->GetMinLevel() <= bracketEntry->minLevel && bg->GetMaxLevel() >= bracketEntry->maxLevel) bgsToCheck.insert(bg); } // now iterate needing battlegrounds - for (BattlegroundNeedSet::iterator itr = bgsToCheck.begin(); itr != bgsToCheck.end(); ++itr) + for (auto bg : bgsToCheck) { - Battleground* bg = *itr; - // call a function that fills whatever we can from normal queues FillPlayersToBG(bg, bg->GetFreeSlotsForTeam(TEAM_ALLIANCE), bg->GetFreeSlotsForTeam(TEAM_HORDE), bracket_id); @@ -742,8 +738,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id // invite players for (uint32 i = 0; i < BG_TEAMS_COUNT; i++) - for (GroupsQueueType::const_iterator citr = m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.begin(); citr != m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.end(); ++citr) - BattlegroundMgr::InviteGroupToBG((*citr), bg, (*citr)->teamId); + for (auto & SelectedGroup : m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups) + BattlegroundMgr::InviteGroupToBG(SelectedGroup, bg, SelectedGroup->teamId); bg->StartBattleground(); @@ -755,8 +751,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id // invite players for (uint32 i = 0; i < BG_TEAMS_COUNT; i++) - for (GroupsQueueType::const_iterator citr = m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.begin(); citr != m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.end(); ++citr) - BattlegroundMgr::InviteGroupToBG((*citr), bg, (*citr)->teamId); + for (auto & SelectedGroup : m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups) + BattlegroundMgr::InviteGroupToBG(SelectedGroup, bg, SelectedGroup->teamId); } } @@ -777,8 +773,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id // invite players for (uint32 i = 0; i < BG_TEAMS_COUNT; i++) - for (GroupsQueueType::const_iterator citr = m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.begin(); citr != m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups.end(); ++citr) - BattlegroundMgr::InviteGroupToBG((*citr), bg, (*citr)->teamId); + for (auto & SelectedGroup : m_SelectionPools[TEAM_ALLIANCE + i].SelectedGroups) + BattlegroundMgr::InviteGroupToBG(SelectedGroup, bg, SelectedGroup->teamId); bg->StartBattleground(); } @@ -797,11 +793,11 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id GroupsQueueType::iterator itr_teams[BG_TEAMS_COUNT]; bool increaseItr = true; - bool reverse1 = urand(0, 1) ? true : false; + bool reverse1 = urand(0, 1) != 0; for (uint8 ii = BG_QUEUE_PREMADE_ALLIANCE; ii <= BG_QUEUE_PREMADE_HORDE; ii++) { uint8 i = reverse1 ? (BG_QUEUE_PREMADE_HORDE - ii) : ii; - for (GroupsQueueType::iterator itr = m_QueuedGroups[bracket_id][i].begin(); itr != m_QueuedGroups[bracket_id][i].end(); (increaseItr ? ++itr : itr)) + for (auto itr = m_QueuedGroups[bracket_id][i].begin(); itr != m_QueuedGroups[bracket_id][i].end(); (increaseItr ? ++itr : itr)) { increaseItr = true; @@ -818,12 +814,12 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id uint32 minOponentMMRDiff = 0xffffffff; uint8 oponentValid = 0; - bool reverse2 = urand(0, 1) ? true : false; + bool reverse2 = urand(0, 1) != 0; for (uint8 jj = BG_QUEUE_PREMADE_ALLIANCE; jj <= BG_QUEUE_PREMADE_HORDE; jj++) { uint8 j = reverse2 ? (BG_QUEUE_PREMADE_HORDE - jj) : jj; bool brk = false; - for (GroupsQueueType::iterator itr2 = m_QueuedGroups[bracket_id][j].begin(); itr2 != m_QueuedGroups[bracket_id][j].end(); ++itr2) + for (auto itr2 = m_QueuedGroups[bracket_id][j].begin(); itr2 != m_QueuedGroups[bracket_id][j].end(); ++itr2) { if ((*itr)->ArenaTeamId == (*itr2)->ArenaTeamId) continue; @@ -945,7 +941,7 @@ uint32 BattlegroundQueue::GetPlayersCountInGroupsQueue(BattlegroundBracketId bra for (auto const& itr : m_QueuedGroups[bracketId][bgqueue]) if (!itr->IsInvitedToBGInstanceGUID) playersCount += static_cast(itr->Players.size()); - + return playersCount; } @@ -957,10 +953,7 @@ bool BattlegroundQueue::IsAllQueuesEmpty(BattlegroundBracketId bracket_id) if (m_QueuedGroups[bracket_id][i].empty()) queueEmptyCount++; - if (queueEmptyCount == BG_QUEUE_MAX) - return true; - - return false; + return queueEmptyCount == BG_QUEUE_MAX; } void BattlegroundQueue::SendMessageQueue(Player* leader, Battleground* bg, PvPDifficultyEntry const* bracketEntry) diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h index 64256051c..078dcd15b 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.h +++ b/src/server/game/Battlegrounds/BattlegroundQueue.h @@ -58,15 +58,15 @@ class BattlegroundQueue void BattlegroundQueueUpdate(BattlegroundBracketId bracket_id, bool isRated, uint32 arenaRatedTeamId); void UpdateEvents(uint32 diff); - void FillPlayersToBG(Battleground* bg, const int32 aliFree, const int32 hordeFree, BattlegroundBracketId bracket_id); - void FillPlayersToBGWithSpecific(Battleground* bg, const int32 aliFree, const int32 hordeFree, BattlegroundBracketId thisBracketId, BattlegroundQueue* specificQueue, BattlegroundBracketId specificBracketId); + void FillPlayersToBG(Battleground* bg, int32 aliFree, int32 hordeFree, BattlegroundBracketId bracket_id); + void FillPlayersToBGWithSpecific(Battleground* bg, int32 aliFree, int32 hordeFree, BattlegroundBracketId thisBracketId, BattlegroundQueue* specificQueue, BattlegroundBracketId specificBracketId); bool CheckPremadeMatch(BattlegroundBracketId bracket_id, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam); bool CheckNormalMatch(Battleground* bgTemplate, BattlegroundBracketId bracket_id, uint32 minPlayers, uint32 maxPlayers); bool CheckSkirmishForSameFaction(BattlegroundBracketId bracket_id, uint32 minPlayersPerTeam); GroupQueueInfo* AddGroup(Player* leader, Group* group, PvPDifficultyEntry const* bracketEntry, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 ArenaTeamId); void RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQueueSlot); bool IsPlayerInvitedToRatedArena(uint64 pl_guid); - bool IsPlayerInvited(uint64 pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime); + bool IsPlayerInvited(uint64 pl_guid, uint32 bgInstanceGuid, uint32 removeTime); bool GetPlayerGroupInfoData(uint64 guid, GroupQueueInfo* ginfo); void PlayerInvitedToBGUpdateAverageWaitTime(GroupQueueInfo* ginfo); uint32 GetAverageQueueWaitTime(GroupQueueInfo* ginfo) const; @@ -101,8 +101,8 @@ class BattlegroundQueue SelectionPool(): PlayerCount(0) {}; void Init(); bool AddGroup(GroupQueueInfo* ginfo, uint32 desiredCount); - bool KickGroup(const uint32 size); - uint32 GetPlayerCount() const {return PlayerCount;} + bool KickGroup(uint32 size); + [[nodiscard]] uint32 GetPlayerCount() const { return PlayerCount; } public: GroupsQueueType SelectedGroups; private: @@ -132,10 +132,10 @@ class BGQueueInviteEvent : public BasicEvent BGQueueInviteEvent(uint64 pl_guid, uint32 BgInstanceGUID, BattlegroundTypeId BgTypeId, uint8 arenaType, uint32 removeTime) : m_PlayerGuid(pl_guid), m_BgInstanceGUID(BgInstanceGUID), m_BgTypeId(BgTypeId), m_ArenaType(arenaType), m_RemoveTime(removeTime) { } - virtual ~BGQueueInviteEvent() { } + ~BGQueueInviteEvent() override = default; - virtual bool Execute(uint64 e_time, uint32 p_time); - virtual void Abort(uint64 e_time); + bool Execute(uint64 e_time, uint32 p_time) override; + void Abort(uint64 e_time) override; private: uint64 m_PlayerGuid; uint32 m_BgInstanceGUID; @@ -156,10 +156,10 @@ class BGQueueRemoveEvent : public BasicEvent : m_PlayerGuid(pl_guid), m_BgInstanceGUID(bgInstanceGUID), m_RemoveTime(removeTime), m_BgQueueTypeId(bgQueueTypeId) {} - virtual ~BGQueueRemoveEvent() {} + ~BGQueueRemoveEvent() override = default; - virtual bool Execute(uint64 e_time, uint32 p_time); - virtual void Abort(uint64 e_time); + bool Execute(uint64 e_time, uint32 p_time) override; + void Abort(uint64 e_time) override; private: uint64 m_PlayerGuid; uint32 m_BgInstanceGUID;