mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-17 07:02:54 -04:00
GroupObject
- remove member is now checks to make sure that if one of two GroupMembers leaves, then the group should disband - added method disbandGroup to destroy the group GroupService - instead of doing its own disbanding, that responsibility was refactored to GroupObject
This commit is contained in:
@@ -42,6 +42,7 @@ import java.io.ObjectInputStream;
|
||||
import java.io.Serializable;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
@@ -100,27 +101,23 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO?
|
||||
}
|
||||
|
||||
public void removeMember(CreatureObject object) {
|
||||
|
||||
|
||||
GroupMember member = new GroupMember(object);
|
||||
synchronized (groupMembers) {
|
||||
|
||||
if (this.leader == object.getObjectId()) {
|
||||
|
||||
if (this.leader == object.getObjectId() && this.groupMembers.size() > 2) {
|
||||
this.setLeader(this.groupMembers.get(2));
|
||||
}
|
||||
|
||||
groupMembers.remove(member);
|
||||
if (this.groupMembers.size() == 3) {
|
||||
this.disbandGroup();
|
||||
return;
|
||||
}
|
||||
|
||||
groupMembers.remove(member);
|
||||
object.setGroupId(0);
|
||||
awarenessOutOfRange(object, true);
|
||||
|
||||
if (groupMembers.size() == 2) {
|
||||
|
||||
for (GroupMember grpMember : groupMembers) {
|
||||
|
||||
groupMembers.remove(grpMember);
|
||||
grpMember.playerCreo.setGroupId(0);
|
||||
}
|
||||
}
|
||||
|
||||
groupMembers.sendDeltaMessage(this);
|
||||
}
|
||||
}
|
||||
@@ -239,6 +236,24 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO?
|
||||
this.logoffTimers.remove(loggedMember).cancel();
|
||||
}
|
||||
|
||||
public void disbandGroup() {
|
||||
|
||||
synchronized (groupMembers) {
|
||||
|
||||
Iterator<GroupMember> iter = this.groupMembers.iterator();
|
||||
|
||||
while (iter.hasNext()) {
|
||||
GroupMember grpMember = iter.next();
|
||||
iter.remove();
|
||||
grpMember.playerCreo.setGroupId(0);
|
||||
awarenessOutOfRange(grpMember.playerCreo, true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
groupMembers.sendDeltaMessage(this);
|
||||
}
|
||||
|
||||
private static class PickupPointTimer implements Serializable, Encodable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user