From afbde8800a3c9f74c3427f26ade5fd662bef9435 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 9 Feb 2025 22:35:20 +0100 Subject: [PATCH] Core/Misc: Reduce code differences between branches --- .../game/Battlegrounds/BattlegroundMgr.cpp | 26 +++++-------------- .../game/Battlegrounds/BattlegroundQueue.h | 2 +- src/server/game/Groups/Group.cpp | 8 +++--- .../game/Handlers/BattleGroundHandler.cpp | 3 ++- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 5a92041c536ff..61c0d01e2a74b 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -126,13 +126,8 @@ void BattlegroundMgr::Update(uint32 diff) std::vector scheduled; std::swap(scheduled, m_QueueUpdateScheduler); - for (uint8 i = 0; i < scheduled.size(); i++) - { - uint32 arenaMMRating = scheduled[i].ArenaMatchmakerRating; - BattlegroundQueueTypeId bgQueueTypeId = scheduled[i].QueueId; - BattlegroundBracketId bracket_id = scheduled[i].BracketId; + for (auto& [arenaMMRating, bgQueueTypeId, bracket_id] : scheduled) GetBattlegroundQueue(bgQueueTypeId).BattlegroundQueueUpdate(diff, bracket_id, arenaMMRating); - } } // if rating difference counts, maybe force-update queues @@ -499,7 +494,7 @@ bool BattlegroundMgr::IsRandomBattleground(uint32 battlemasterListId) BattlegroundQueueTypeId BattlegroundMgr::BGQueueTypeId(uint16 battlemasterListId, BattlegroundQueueIdType type, bool rated, uint8 teamSize) { - return { battlemasterListId, AsUnderlyingType(type), rated, teamSize }; + return { .BattlemasterListId = battlemasterListId, .Type = AsUnderlyingType(type), .Rated = rated, .TeamSize = teamSize }; } void BattlegroundMgr::ToggleTesting() @@ -687,23 +682,14 @@ BattlegroundTypeId BattlegroundMgr::GetRandomBG(BattlegroundTypeId bgTypeId) { if (BattlegroundTemplate const* bgTemplate = GetBattlegroundTemplateByTypeId(bgTypeId)) { - std::vector ids; + std::vector ids; ids.reserve(bgTemplate->MapIDs.size()); - std::vector weights; - weights.reserve(bgTemplate->MapIDs.size()); - double totalWeight = 0.0; for (int32 mapId : bgTemplate->MapIDs) - { if (BattlegroundTemplate const* bg = GetBattlegroundTemplateByMapId(mapId)) - { - ids.push_back(bg->Id); - weights.push_back(bg->Weight); - totalWeight += bg->Weight; - } - } + ids.push_back(bg); - if (totalWeight > 0.0) - return *Trinity::Containers::SelectRandomWeightedContainerElement(ids, std::span(weights)); + if (!ids.empty()) + return (*Trinity::Containers::SelectRandomWeightedContainerElement(ids, [](BattlegroundTemplate const* bg) { return bg->Weight; }))->Id; } return BATTLEGROUND_TYPE_NONE; diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.h b/src/server/game/Battlegrounds/BattlegroundQueue.h index 300d934ddeef7..6b442366b736a 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.h +++ b/src/server/game/Battlegrounds/BattlegroundQueue.h @@ -122,7 +122,7 @@ class TC_GAME_API BattlegroundQueue SelectionPool m_SelectionPools[PVP_TEAMS_COUNT]; uint32 GetPlayersInQueue(TeamId id); - BattlegroundQueueTypeId const GetQueueId() const { return m_queueId; } + BattlegroundQueueTypeId GetQueueId() const { return m_queueId; } private: BattlegroundQueueTypeId m_queueId; diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 35dc8e811409b..1da93b4c270c4 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1194,6 +1194,8 @@ void Group::UpdateLooterGuid(WorldObject* pLootedObject, bool ifneed) GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(BattlegroundTemplate const* bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint32 MinPlayerCount, uint32 /*MaxPlayerCount*/, bool isRated, uint32 arenaSlot, ObjectGuid& errorGuid) const { + errorGuid = ObjectGuid::Empty; + // check if this group is LFG group if (isLFGGroup()) return ERR_LFG_CANT_USE_BATTLEGROUND; @@ -1230,15 +1232,13 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(BattlegroundTemplate // offline member? don't let join if (!member) return ERR_BATTLEGROUND_JOIN_FAILED; + errorGuid = member->GetGUID(); // rbac permissions if (!member->CanJoinToBattleground(bgOrTemplate)) return ERR_BATTLEGROUND_JOIN_TIMED_OUT; // don't allow cross-faction join as group if (member->GetTeam() != team) - { - errorGuid = member->GetGUID(); return ERR_BATTLEGROUND_JOIN_TIMED_OUT; - } // not in the same battleground level braket, don't let join PVPDifficultyEntry const* memberBracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bracketEntry->MapID, member->GetLevel()); if (memberBracketEntry != bracketEntry) @@ -1273,6 +1273,8 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(BattlegroundTemplate return ERR_BATTLEGROUND_JOIN_MERCENARY; } + errorGuid = ObjectGuid::Empty; + // only check for MinPlayerCount since MinPlayerCount == MaxPlayerCount for arenas... if (bgOrTemplate->IsArena() && memberscount != MinPlayerCount) return ERR_ARENA_TEAM_PARTY_SIZE; diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 5b24f781b4e74..a04564c5a41f2 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -28,6 +28,7 @@ #include "Creature.h" #include "DB2Stores.h" #include "DisableMgr.h" +#include "GameTime.h" #include "Group.h" #include "Language.h" #include "Log.h" @@ -491,7 +492,7 @@ void WorldSession::HandleRequestBattlefieldStatusOpcode(WorldPackets::Battlegrou continue; WorldPackets::Battleground::BattlefieldStatusNeedConfirmation battlefieldStatus; - BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(&battlefieldStatus, bg, _player, i, _player->GetBattlegroundQueueJoinTime(bgQueueTypeId), getMSTimeDiff(getMSTime(), ginfo.RemoveInviteTime), bgQueueTypeId); + BattlegroundMgr::BuildBattlegroundStatusNeedConfirmation(&battlefieldStatus, bg, _player, i, _player->GetBattlegroundQueueJoinTime(bgQueueTypeId), getMSTimeDiff(GameTime::GetGameTimeMS(), ginfo.RemoveInviteTime), bgQueueTypeId); SendPacket(battlefieldStatus.Write()); } else