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/Entities/Unit | |
| parent | ae197a62b77cd93799571b16756c372081704929 (diff) | |
Core/Groups: Use iterators instead of raw LinkedListElement to interact with group members
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 63eeb3b1ea2..91ab4c5168c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6612,18 +6612,18 @@ Unit* Unit::GetNextRandomRaidMemberOrPet(float radius) // reserve place for players and pets because resizing vector every unit push is unefficient (vector is reallocated then) nearMembers.reserve(group->GetMembersCount() * 2); - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) - if (Player* Target = itr->GetSource()) - { - // IsHostileTo check duel and controlled by enemy - if (Target != this && IsWithinDistInMap(Target, radius) && Target->IsAlive() && !IsHostileTo(Target)) - nearMembers.push_back(Target); + for (GroupReference const& itr : group->GetMembers()) + { + Player* Target = itr.GetSource(); + // IsHostileTo check duel and controlled by enemy + if (Target != this && IsWithinDistInMap(Target, radius) && Target->IsAlive() && !IsHostileTo(Target)) + nearMembers.push_back(Target); // Push player's pet to vector if (Unit* pet = Target->GetGuardianPet()) if (pet != this && IsWithinDistInMap(pet, radius) && pet->IsAlive() && !IsHostileTo(pet)) nearMembers.push_back(pet); - } + } if (nearMembers.empty()) return nullptr; @@ -11978,12 +11978,12 @@ void Unit::GetPartyMembers(std::list<Unit*> &TagUnitMap) { uint8 subgroup = owner->ToPlayer()->GetSubGroup(); - for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) + for (GroupReference const& itr : group->GetMembers()) { - Player* Target = itr->GetSource(); + Player* Target = itr.GetSource(); // IsHostileTo check duel and controlled by enemy - if (Target && Target->IsInMap(owner) && Target->GetSubGroup() == subgroup && !IsHostileTo(Target)) + if (Target->IsInMap(owner) && Target->GetSubGroup() == subgroup && !IsHostileTo(Target)) { if (Target->IsAlive()) TagUnitMap.push_back(Target); |
