diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-07-11 17:40:34 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-07-11 17:40:34 +0200 |
commit | cbb532e4bec11d59f2072441a43b7c797de6d16d (patch) | |
tree | 27a0dc63805e527d2f47744963fc2f341493ce27 /src/server/game/DungeonFinding/LFGMgr.cpp | |
parent | ae197a62b77cd93799571b16756c372081704929 (diff) |
Core/Groups: Use iterators instead of raw LinkedListElement to interact with group members
Diffstat (limited to 'src/server/game/DungeonFinding/LFGMgr.cpp')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 5dc01536bf6..86d0b5f5148 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -452,26 +452,27 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons) else { uint8 memberCount = 0; - for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr && joinData.result == LFG_JOIN_OK; itr = itr->next()) + for (GroupReference const& itr : grp->GetMembers()) { - if (Player* plrg = itr->GetSource()) + Player* plrg = itr.GetSource(); + if (!plrg->GetSession()->HasPermission(rbac::RBAC_PERM_JOIN_DUNGEON_FINDER)) + joinData.result = LFG_JOIN_NO_LFG_OBJECT; + if (plrg->HasAura(LFG_SPELL_DUNGEON_DESERTER)) + joinData.result = LFG_JOIN_DESERTER_PARTY; + else if (!isContinue && plrg->HasAura(LFG_SPELL_DUNGEON_COOLDOWN)) + joinData.result = LFG_JOIN_RANDOM_COOLDOWN_PARTY; + else if (plrg->InBattleground() || plrg->InArena() || plrg->InBattlegroundQueue()) + joinData.result = LFG_JOIN_CANT_USE_DUNGEONS; + else if (plrg->HasAura(9454)) // check Freeze debuff { - if (!plrg->GetSession()->HasPermission(rbac::RBAC_PERM_JOIN_DUNGEON_FINDER)) - joinData.result = LFG_JOIN_NO_LFG_OBJECT; - if (plrg->HasAura(LFG_SPELL_DUNGEON_DESERTER)) - joinData.result = LFG_JOIN_DESERTER_PARTY; - else if (!isContinue && plrg->HasAura(LFG_SPELL_DUNGEON_COOLDOWN)) - joinData.result = LFG_JOIN_RANDOM_COOLDOWN_PARTY; - else if (plrg->InBattleground() || plrg->InArena() || plrg->InBattlegroundQueue()) - joinData.result = LFG_JOIN_CANT_USE_DUNGEONS; - else if (plrg->HasAura(9454)) // check Freeze debuff - { - joinData.result = LFG_JOIN_NO_SLOTS; - joinData.playersMissingRequirement.push_back(plrg->GetName()); - } - ++memberCount; - players.insert(plrg->GetGUID()); + joinData.result = LFG_JOIN_NO_SLOTS; + joinData.playersMissingRequirement.push_back(plrg->GetName()); } + ++memberCount; + players.insert(plrg->GetGUID()); + + if (joinData.result != LFG_JOIN_OK) + break; } if (joinData.result == LFG_JOIN_OK && memberCount != grp->GetMembersCount()) @@ -571,21 +572,19 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons) SetState(gguid, LFG_STATE_ROLECHECK); // Send update to player LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_JOIN_QUEUE, dungeons); - for (GroupReference* itr = grp->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const& itr : grp->GetMembers()) { - if (Player* plrg = itr->GetSource()) - { - ObjectGuid pguid = plrg->GetGUID(); - plrg->GetSession()->SendLfgUpdateStatus(updateData, true); - SetState(pguid, LFG_STATE_ROLECHECK); - SetTicket(pguid, ticket); - if (!isContinue) - SetSelectedDungeons(pguid, dungeons); - roleCheck.roles[pguid] = 0; - if (!debugNames.empty()) - debugNames.append(", "); - debugNames.append(plrg->GetName()); - } + Player* plrg = itr.GetSource(); + ObjectGuid pguid = plrg->GetGUID(); + plrg->GetSession()->SendLfgUpdateStatus(updateData, true); + SetState(pguid, LFG_STATE_ROLECHECK); + SetTicket(pguid, ticket); + if (!isContinue) + SetSelectedDungeons(pguid, dungeons); + roleCheck.roles[pguid] = 0; + if (!debugNames.empty()) + debugNames.append(", "); + debugNames.append(plrg->GetName()); } // Update leader role UpdateRoleCheck(gguid, guid, roles); @@ -1407,10 +1406,10 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false* if (!fromOpcode) { // Select a player inside to be teleported to - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const& itr : group->GetMembers()) { - Player* plrg = itr->GetSource(); - if (plrg && plrg != player && plrg->GetMapId() == uint32(dungeon->map)) + Player* plrg = itr.GetSource(); + if (plrg != player && plrg->GetMapId() == uint32(dungeon->map)) { mapid = plrg->GetMapId(); x = plrg->GetPositionX(); |