aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2017-06-15 13:08:26 +0200
committertreeston <treeston.mmoc@gmail.com>2017-06-15 13:08:26 +0200
commit250e8d998bca7f239e2393b6d002441f70d4daf0 (patch)
tree7761a0b2de1608b6d775a87b585e79a518c659cc
parent4b6351e6a5a2e2c986f3c0ea8e25bc76055c5b2c (diff)
Group creation again (follow-up to 132538d). Groups now only disband if all members reject the invitation (as opposed to if any member rejects the invitation).
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
-rw-r--r--src/server/game/Groups/Group.h1
2 files changed, 7 insertions, 6 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 9a4cf075a98..e2038e91e89 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2592,7 +2592,6 @@ bool Player::IsInSameRaidWith(Player const* p) const
}
///- If the player is invited, remove him. If the group if then only 1 person, disband the group.
-/// @todo Shouldn't we also check if there is no other invitees before disbanding the group?
void Player::UninviteFromGroup()
{
Group* group = GetGroupInvite();
@@ -2601,13 +2600,14 @@ void Player::UninviteFromGroup()
group->RemoveInvite(this);
- if (group->GetMembersCount() <= 1) // group has just 1 member => disband
+ if (group->IsCreated())
{
- if (group->IsCreated())
- {
+ if (group->GetMembersCount() <= 1) // group has just 1 member => disband
group->Disband(true);
- }
- else
+ }
+ else
+ {
+ if (group->GetInviteeCount() <= 1)
{
group->RemoveAllInvites();
delete group;
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h
index 53ef13e501a..bee3f95350a 100644
--- a/src/server/game/Groups/Group.h
+++ b/src/server/game/Groups/Group.h
@@ -243,6 +243,7 @@ class TC_GAME_API Group
GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); }
GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); }
uint32 GetMembersCount() const { return m_memberSlots.size(); }
+ uint32 GetInviteeCount() const { return m_invitees.size(); }
uint8 GetMemberGroup(ObjectGuid guid) const;