Started work on groups, fixed trading

This commit is contained in:
Light2
2013-08-16 18:13:12 +02:00
parent 0631fcd118
commit db626248c7
5 changed files with 322 additions and 6 deletions
+50 -5
View File
@@ -21,8 +21,9 @@
******************************************************************************/
package resources.objects.group;
import java.util.Vector;
import org.apache.mina.core.buffer.IoBuffer;
import resources.objects.SWGList;
import engine.clients.Client;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Point3D;
@@ -31,18 +32,20 @@ import engine.resources.scene.Quaternion;
public class GroupObject extends SWGObject {
private Vector<SWGObject> memberList = new Vector<SWGObject>();
private SWGList<SWGObject> memberList = new SWGList<SWGObject>();
private int memberListUpdateCounter;
private SWGObject groupLeader;
private SWGObject lootMaster;
private short groupLevel;
private int lootMode;
private GroupMessageBuilder messageBuilder;
public GroupObject(long objectId) {
super(objectId, null, new Point3D(0, 0, 0), new Quaternion(0, 0, 0, 1), "object/group/shared_group_object.iff");
messageBuilder = new GroupMessageBuilder(this);
}
public Vector<SWGObject> getMemberList() {
public SWGList<SWGObject> getMemberList() {
return memberList;
}
@@ -105,10 +108,52 @@ public class GroupObject extends SWGObject {
this.lootMode = lootMode;
}
}
public void addMember(SWGObject member) {
if(memberList.size() >= 8 || member.getClient() == null)
return;
memberList.add(member);
setMemberListUpdateCounter(getMemberListUpdateCounter() + 1);
IoBuffer packet = messageBuilder.buildAddMemberDelta(member);
synchronized(memberList.getMutex()) {
for(SWGObject obj : memberList.get()) {
obj.getClient().getSession().write(packet);
}
}
}
public void removeMember(SWGObject member) {
if(memberList.size() <= 0 || member.getClient() == null)
return;
setMemberListUpdateCounter(getMemberListUpdateCounter() + 1);
IoBuffer packet = messageBuilder.buildRemoveMemberDelta(member);
synchronized(memberList.getMutex()) {
for(SWGObject obj : memberList.get()) {
obj.getClient().getSession().write(packet);
}
}
memberList.remove(member);
}
@Override
public void sendBaselines(Client client) {
// TODO Auto-generated method stub
public void sendBaselines(Client destination) {
if(destination == null || destination.getSession() == null) {
System.out.println("NULL session");
return;
}
destination.getSession().write(messageBuilder.buildBaseline3());
destination.getSession().write(messageBuilder.buildBaseline6());
}