Core/Groups: Use iterators instead of raw LinkedListElement to interact with group members

This commit is contained in:
Shauren
2025-07-11 17:40:34 +02:00
parent ae197a62b7
commit cbb532e4be
31 changed files with 251 additions and 321 deletions

View File

@@ -60,10 +60,9 @@ void EscortAI::JustDied(Unit* /*killer*/)
{
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
if (Player* member = groupRef->GetSource())
if (member->IsInMap(player))
member->FailQuest(_escortQuest->GetQuestId());
for (GroupReference const& groupRef : group->GetMembers())
if (groupRef.GetSource()->IsInMap(player))
groupRef.GetSource()->FailQuest(_escortQuest->GetQuestId());
}
else
player->FailQuest(_escortQuest->GetQuestId());
@@ -417,10 +416,9 @@ bool EscortAI::IsPlayerOrGroupInRange()
{
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
if (Player* member = groupRef->GetSource())
if (me->IsWithinDistInMap(member, GetMaxPlayerDistance()))
return true;
for (GroupReference const& groupRef : group->GetMembers())
if (me->IsWithinDistInMap(groupRef.GetSource(), GetMaxPlayerDistance()))
return true;
}
else if (me->IsWithinDistInMap(player, GetMaxPlayerDistance()))
return true;

View File

@@ -51,10 +51,9 @@ void FollowerAI::JustDied(Unit* /*killer*/)
{
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
if (Player* member = groupRef->GetSource())
if (member->IsInMap(player))
member->FailQuest(_questForFollow);
for (GroupReference const& groupRef : group->GetMembers())
if (groupRef.GetSource()->IsInMap(player))
groupRef.GetSource()->FailQuest(_questForFollow);
}
else
player->FailQuest(_questForFollow);
@@ -101,11 +100,9 @@ void FollowerAI::UpdateAI(uint32 uiDiff)
{
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef && (maxRangeExceeded || questAbandoned); groupRef = groupRef->next())
for (GroupReference const& groupRef : group->GetMembers())
{
Player* member = groupRef->GetSource();
if (!member)
continue;
Player* member = groupRef.GetSource();
if (maxRangeExceeded && me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE))
maxRangeExceeded = false;
if (questAbandoned)
@@ -238,10 +235,10 @@ Player* FollowerAI::GetLeaderForFollower()
{
if (Group* group = player->GetGroup())
{
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
for (GroupReference const& groupRef : group->GetMembers())
{
Player* member = groupRef->GetSource();
if (member && me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE) && member->IsAlive())
Player* member = groupRef.GetSource();
if (me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE) && member->IsAlive())
{
TC_LOG_DEBUG("scripts.ai.followerai", "FollowerAI::GetLeaderForFollower: GetLeader changed and returned new leader. ({})", me->GetGUID().ToString());
_leaderGUID = member->GetGUID();