diff options
| author | leak <leakzx@googlemail.com> | 2011-02-22 16:52:38 +0100 | 
|---|---|---|
| committer | leak <leakzx@googlemail.com> | 2011-02-22 16:52:38 +0100 | 
| commit | 09bac61e426e864d64f5e6a7eb8e645b967dfe03 (patch) | |
| tree | 56c6c71d35e837555cde23db215556ca98b473f9 /src | |
| parent | 1cdec5880ebbf26713dbca0d0906a327e84b7260 (diff) | |
Core/Groups: Move scattered group object deletion to Disband()
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 1 | ||||
| -rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 16 | ||||
| -rwxr-xr-x | src/server/game/Groups/Group.cpp | 14 | ||||
| -rwxr-xr-x | src/server/game/Groups/Group.h | 2 | 
4 files changed, 14 insertions, 19 deletions
| diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 658846c881c..e0844cdcccd 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1034,7 +1034,6 @@ void Battleground::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac              if (!group->RemoveMember(guid))                // group was disbanded              {                  SetBgRaid(team, NULL); -                delete group;              }          }          DecreaseInvitedCount(team); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d3d38ffa4aa..1179eef26e6 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2647,12 +2647,12 @@ void Player::UninviteFromGroup()          if (group->IsCreated())          {              group->Disband(true); -            sObjectMgr->RemoveGroup(group);          }          else +        {              group->RemoveAllInvites(); - -        delete group; +            delete group; +        }      }  } @@ -2660,14 +2660,8 @@ void Player::RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method /* =  {      if (group)      { -        if (group->RemoveMember(guid, method, kicker, reason) <= 1) -        { -            // group->Disband(); already disbanded in RemoveMember -            sObjectMgr->RemoveGroup(group); -            delete group; -            group = NULL; -            // removemember sets the player's group pointer to NULL -        } +        group->RemoveMember(guid, method, kicker, reason); +        group = NULL;      }  } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index bef3904bddb..2f7ae3c4d5f 100755 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -405,7 +405,7 @@ bool Group::AddMember(Player *player)      return true;  } -uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method /* = GROUP_REMOVEMETHOD_DEFAULT */, uint64 kicker /* = 0 */, const char* reason /* = NULL */) +bool Group::RemoveMember(const uint64 &guid, const RemoveMethod &method /*= GROUP_REMOVEMETHOD_DEFAULT*/, uint64 kicker /*= 0*/, const char* reason /*= NULL*/)  {      BroadcastGroupUpdate(); @@ -505,12 +505,15 @@ uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method /* = G          }          SendUpdate(); + +        return true;      }      // If group size before player removal <= 2 then disband it      else +    {          Disband(); - -    return m_memberSlots.size(); +        return false; +    }  }  void Group::ChangeLeader(const uint64 &guid) @@ -634,9 +637,8 @@ void Group::Disband(bool hideDestroy /* = false */)          ResetInstances(INSTANCE_RESET_GROUP_DISBAND, true, NULL);      } -    m_guid = 0; -    m_leaderGuid = 0; -    m_leaderName = ""; +    sObjectMgr->RemoveGroup(this); +    delete this;  }  /*********************************************************/ diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index e4c4066572a..3928b6ee54a 100755 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -190,7 +190,7 @@ class Group          void   RemoveAllInvites();          bool   AddLeaderInvite(Player *player);          bool   AddMember(Player *player); -        uint32 RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0, const char* reason = NULL); +        bool   RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0, const char* reason = NULL);          void   ChangeLeader(const uint64 &guid);          void   SetLootMethod(LootMethod method);          void   SetLooterGuid(const uint64 &guid); | 
