diff --git a/src/resources/objects/IDelta.java b/src/resources/objects/IDelta.java index 874715b0..cf1d8802 100644 --- a/src/resources/objects/IDelta.java +++ b/src/resources/objects/IDelta.java @@ -21,12 +21,10 @@ ******************************************************************************/ package resources.objects; -import java.io.Serializable; - import com.sleepycat.persist.model.Persistent; @Persistent -public interface IDelta { +public interface IDelta { public byte[] getBytes(); diff --git a/src/resources/objects/ObjectMessageBuilder.java b/src/resources/objects/ObjectMessageBuilder.java index 4ae29461..073e7c6e 100644 --- a/src/resources/objects/ObjectMessageBuilder.java +++ b/src/resources/objects/ObjectMessageBuilder.java @@ -42,7 +42,7 @@ public abstract class ObjectMessageBuilder { public SWGObject object; @NotPersistent public SimpleBufferAllocator bufferPool = new SimpleBufferAllocator(); - + public IoBuffer createBaseline(String objectType, byte viewType, IoBuffer data, int size) { IoBuffer buffer = bufferPool.allocate(23 + size, false).order(ByteOrder.LITTLE_ENDIAN); diff --git a/src/resources/objects/SWGList.java b/src/resources/objects/SWGList.java index d7d63f68..13e1854d 100644 --- a/src/resources/objects/SWGList.java +++ b/src/resources/objects/SWGList.java @@ -22,7 +22,7 @@ package resources.objects; import java.io.Serializable; -import java.nio.ByteOrder; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; @@ -35,12 +35,16 @@ import java.util.function.Predicate; import java.util.function.UnaryOperator; import java.util.stream.Stream; +import main.NGECore; + import org.apache.mina.core.buffer.IoBuffer; import org.python.google.common.collect.Lists; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; +import engine.resources.objects.SWGObject; + /* A SWGList element MUST implement IDelta, or it will refuse to work with it */ @Persistent @@ -50,7 +54,8 @@ public class SWGList implements List, Serializable { private List list = new ArrayList(); @NotPersistent private transient int updateCounter = 1; - private ObjectMessageBuilder messageBuilder; + private long objectId; + private transient ObjectMessageBuilder messageBuilder; private byte viewType; private short updateType; @NotPersistent @@ -58,8 +63,8 @@ public class SWGList implements List, Serializable { public SWGList() { } - public SWGList(ObjectMessageBuilder messageBuilder, int viewType, int updateType) { - this.messageBuilder = messageBuilder; + public SWGList(long objectId, int viewType, int updateType) { + this.objectId = objectId; this.viewType = (byte) viewType; this.updateType = (short) updateType; } @@ -296,7 +301,7 @@ public class SWGList implements List, Serializable { if (!list.isEmpty()) { for (E element : list) { if (element instanceof IDelta) { - IoBuffer buffer = messageBuilder.bufferPool.allocate((newListData.length + ((IDelta) element).getBytes().length), false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = Delta.createBuffer((newListData.length + ((IDelta) element).getBytes().length)); buffer.put(newListData); buffer.put(((IDelta) element).getBytes()); newListData = buffer.array(); @@ -361,7 +366,7 @@ public class SWGList implements List, Serializable { return new byte[] { }; } - IoBuffer buffer = messageBuilder.bufferPool.allocate((size), false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = Delta.createBuffer(size); buffer.put((byte) type); if (useIndex) buffer.putShort((short) index); if (useData) buffer.put(data); @@ -372,7 +377,18 @@ public class SWGList implements List, Serializable { } private void queue(byte[] data) { - IoBuffer buffer = messageBuilder.bufferPool.allocate((data.length + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((data.length + 8)); buffer.putInt(1); buffer.putInt(updateCounter); buffer.put(data); @@ -386,7 +402,18 @@ public class SWGList implements List, Serializable { size += queued.length; } - IoBuffer buffer = messageBuilder.bufferPool.allocate((size + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((size + 8)); buffer.putInt(data.size()); buffer.putInt(updateCounter); for (byte[] queued : data) buffer.put(queued); diff --git a/src/resources/objects/SWGMap.java b/src/resources/objects/SWGMap.java index 5e4a28a9..ffd380af 100644 --- a/src/resources/objects/SWGMap.java +++ b/src/resources/objects/SWGMap.java @@ -22,6 +22,7 @@ package resources.objects; import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Collection; @@ -34,6 +35,8 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Function; +import main.NGECore; + import org.apache.mina.core.buffer.IoBuffer; import resources.common.StringUtilities; @@ -41,6 +44,8 @@ import resources.common.StringUtilities; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; +import engine.resources.objects.SWGObject; + @SuppressWarnings("unused") @Persistent @@ -50,7 +55,8 @@ public class SWGMap implements Map, Serializable { private Map map = new TreeMap(); @NotPersistent private transient int updateCounter = 0; - private ObjectMessageBuilder messageBuilder; + long objectId; + private transient ObjectMessageBuilder messageBuilder; private byte viewType; private short updateType; @NotPersistent @@ -58,14 +64,15 @@ public class SWGMap implements Map, Serializable { public SWGMap() { } - public SWGMap(ObjectMessageBuilder messageBuilder, int viewType, int updateType) { - this.messageBuilder = messageBuilder; + public SWGMap(long objectId, int viewType, int updateType) { + this.objectId = objectId; this.viewType = (byte) viewType; this.updateType = (short) updateType; } public SWGMap(Map m) { if (m instanceof SWGMap) { + this.objectId = ((SWGMap) m).objectId; this.messageBuilder = ((SWGMap) m).messageBuilder; this.viewType = ((SWGMap) m).viewType; this.updateType = ((SWGMap) m).updateType; @@ -216,7 +223,7 @@ public class SWGMap implements Map, Serializable { int size = 1 + ((useIndex) ? (2 + index.toString().getBytes().length) : 0) + ((useData) ? data.length : 0); - IoBuffer buffer = messageBuilder.bufferPool.allocate((size), false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = Delta.createBuffer((size)); buffer.put((byte) type); if (useIndex) { if (index instanceof String) { @@ -244,7 +251,18 @@ public class SWGMap implements Map, Serializable { } private void queue(byte[] data) { - IoBuffer buffer = messageBuilder.bufferPool.allocate((data.length + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((data.length + 8)); buffer.putInt(1); buffer.putInt(updateCounter); buffer.put(data); @@ -259,7 +277,18 @@ public class SWGMap implements Map, Serializable { size += queued.length; } - IoBuffer buffer = messageBuilder.bufferPool.allocate((size + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((size + 8)); buffer.putInt(data.size()); buffer.putInt(updateCounter); for (byte[] queued : data) buffer.put(queued); diff --git a/src/resources/objects/SWGMultiMap.java b/src/resources/objects/SWGMultiMap.java index a632c20c..22659c1b 100644 --- a/src/resources/objects/SWGMultiMap.java +++ b/src/resources/objects/SWGMultiMap.java @@ -22,6 +22,7 @@ package resources.objects; import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Collection; @@ -32,6 +33,8 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; +import main.NGECore; + import org.apache.mina.core.buffer.IoBuffer; import org.python.google.common.collect.ArrayListMultimap; import org.python.google.common.collect.Multimap; @@ -44,6 +47,8 @@ import resources.common.StringUtilities; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; +import engine.resources.objects.SWGObject; + @SuppressWarnings("unused") @Persistent @@ -53,7 +58,8 @@ public class SWGMultiMap implements Multimap, Serializable { private Multimap map = ArrayListMultimap.create(); @NotPersistent private transient int updateCounter = 0; - private ObjectMessageBuilder messageBuilder; + private long objectId; + private transient ObjectMessageBuilder messageBuilder; private byte viewType; private short updateType; @NotPersistent @@ -61,14 +67,15 @@ public class SWGMultiMap implements Multimap, Serializable { public SWGMultiMap() { } - public SWGMultiMap(ObjectMessageBuilder messageBuilder, int viewType, int updateType) { - this.messageBuilder = messageBuilder; + public SWGMultiMap(long objectId, int viewType, int updateType) { + this.objectId = objectId; this.viewType = (byte) viewType; this.updateType = (short) updateType; } public SWGMultiMap(Multimap m) { if (m instanceof SWGMultiMap) { + this.objectId = ((SWGMultiMap) m).objectId; this.messageBuilder = ((SWGMultiMap) m).messageBuilder; this.viewType = ((SWGMultiMap) m).viewType; this.updateType = ((SWGMultiMap) m).updateType; @@ -298,7 +305,7 @@ public class SWGMultiMap implements Multimap, Serializable { int size = 1 + ((useIndex) ? (2 + index.toString().getBytes().length) : 0) + ((useData) ? data.length : 0); - IoBuffer buffer = messageBuilder.bufferPool.allocate((size), false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = Delta.createBuffer(size); buffer.put((byte) type); if (useIndex) { if (index instanceof String) { @@ -325,7 +332,18 @@ public class SWGMultiMap implements Multimap, Serializable { } private void queue(byte[] data) { - IoBuffer buffer = messageBuilder.bufferPool.allocate((data.length + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((data.length + 8)); buffer.putInt(1); buffer.putInt(updateCounter); buffer.put(data); @@ -339,7 +357,18 @@ public class SWGMultiMap implements Multimap, Serializable { size += queued.length; } - IoBuffer buffer = messageBuilder.bufferPool.allocate((size + 8), false).order(ByteOrder.LITTLE_ENDIAN); + if (messageBuilder == null) { + try { + SWGObject object = NGECore.getInstance().objectService.getObject(objectId); + this.messageBuilder = (ObjectMessageBuilder) object.getClass().getMethod("getMessageBuilder", new Class[] {}).invoke(object, new Object[] { }); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + IoBuffer buffer = Delta.createBuffer((size + 8)); buffer.putInt(data.size()); buffer.putInt(updateCounter); for (byte[] queued : data) buffer.put(queued); diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 0b8f208b..43228195 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -27,7 +27,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import main.NGECore; -import resources.objects.cell.CellMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; @@ -271,4 +271,8 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria messageBuilder = new BuildingMessageBuilder(this); } + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/cell/CellObject.java b/src/resources/objects/cell/CellObject.java index 1c787a13..cd95919f 100644 --- a/src/resources/objects/cell/CellObject.java +++ b/src/resources/objects/cell/CellObject.java @@ -24,6 +24,7 @@ package resources.objects.cell; import java.io.Serializable; import protocol.swg.UpdateCellPermissionMessage; +import resources.objects.ObjectMessageBuilder; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; @@ -89,6 +90,9 @@ public class CellObject extends SWGObject implements Serializable { super.init(); messageBuilder = new CellMessageBuilder(this); } - - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/craft/DraftSchematic.java b/src/resources/objects/craft/DraftSchematic.java index dfebddf8..54d203a5 100644 --- a/src/resources/objects/craft/DraftSchematic.java +++ b/src/resources/objects/craft/DraftSchematic.java @@ -23,7 +23,7 @@ package resources.objects.craft; import java.io.Serializable; -import resources.objects.building.BuildingMessageBuilder; +import resources.objects.ObjectMessageBuilder; import com.sleepycat.persist.model.Persistent; @@ -37,6 +37,7 @@ import engine.resources.scene.Quaternion; public class DraftSchematic extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; + private transient ObjectMessageBuilder messageBuilder = null; public DraftSchematic(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ super(objectID, planet, position, orientation, template); @@ -52,7 +53,9 @@ public class DraftSchematic extends SWGObject implements Serializable { public void initAfterDBLoad() { super.init(); } - + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } } diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 8d8f7749..10795671 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -43,8 +43,6 @@ import protocol.swg.objectControllerObjects.Animation; import protocol.swg.objectControllerObjects.Posture; import protocol.swg.objectControllerObjects.StartTask; -import com.sleepycat.je.Environment; -import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; @@ -54,16 +52,15 @@ import resources.buffs.Buff; import resources.buffs.DamageOverTime; import resources.common.Cooldown; import resources.common.OutOfBand; +import resources.objects.ObjectMessageBuilder; import resources.objects.SWGList; import resources.objects.SWGMap; import engine.resources.common.CRC; -import engine.resources.objects.IPersistent; import engine.resources.objects.MissionCriticalObject; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -import resources.objects.building.BuildingMessageBuilder; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.skills.SkillMod; @@ -80,7 +77,7 @@ public class CreatureObject extends TangibleObject implements Serializable { private List skills; @NotPersistent private transient int skillsUpdateCounter = 0; - + // CREO 3 private byte posture = 0; private float height; @@ -103,12 +100,11 @@ public class CreatureObject extends TangibleObject implements Serializable { private SWGList abilities; private int abilitiesUpdateCounter = 0; private int xpBarValue = 0; - + private SWGList missionCriticalObjects; @NotPersistent private transient int missionCriticalObjectsUpdateCounter = 0; - - + // CREO6 private byte combatFlag = 0; private short level = -1; @@ -198,12 +194,12 @@ public class CreatureObject extends TangibleObject implements Serializable { messageBuilder = new CreatureMessageBuilder(this); loadTemplateData(); skills = new ArrayList(); - skillMods = new SWGMap(messageBuilder, 4, 3); - abilities = new SWGList(messageBuilder, 4, 14); - missionCriticalObjects = new SWGList(messageBuilder, 4, 13); - equipmentList = new SWGList(messageBuilder, 6, 0x17); - buffList = new SWGList(messageBuilder, 6, 0x1A); - appearanceEquipmentList = new SWGList(messageBuilder, 6, 0x1F); + skillMods = new SWGMap(getObjectID(), 4, 3); + abilities = new SWGList(getObjectID(), 4, 14); + missionCriticalObjects = new SWGList(getObjectID(), 4, 13); + equipmentList = new SWGList(getObjectID(), 6, 0x17); + buffList = new SWGList(getObjectID(), 6, 0x1A); + appearanceEquipmentList = new SWGList(getObjectID(), 6, 0x1F); } public CreatureObject() { @@ -1851,4 +1847,8 @@ public class CreatureObject extends TangibleObject implements Serializable { //return ((float) getCooldown(cooldownGroup) / (float) 1000); //} + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/factorycrate/FactoryCrateObject.java b/src/resources/objects/factorycrate/FactoryCrateObject.java index a2cf5f4d..69f4d537 100644 --- a/src/resources/objects/factorycrate/FactoryCrateObject.java +++ b/src/resources/objects/factorycrate/FactoryCrateObject.java @@ -30,7 +30,6 @@ import protocol.swg.SceneCreateObjectByCrc; import protocol.swg.SceneDestroyObject; import protocol.swg.SceneEndBaselines; import protocol.swg.UpdateContainmentMessage; -import protocol.swg.UpdatePVPStatusMessage; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; @@ -41,7 +40,7 @@ import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -import resources.objects.creature.CreatureMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.creature.CreatureObject; import resources.objects.tangible.TangibleObject; @@ -276,4 +275,9 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { this.getAttributes().put("@obj_attr_n:factory_count", ""+this.getQuantity()); //services.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"FCYT3 Delta"); } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } \ No newline at end of file diff --git a/src/resources/objects/group/GroupObject.java b/src/resources/objects/group/GroupObject.java index 561bf7e7..92986e39 100644 --- a/src/resources/objects/group/GroupObject.java +++ b/src/resources/objects/group/GroupObject.java @@ -21,9 +21,9 @@ ******************************************************************************/ package resources.objects.group; -import java.io.Serializable; import java.util.Vector; +import resources.objects.ObjectMessageBuilder; import resources.objects.universe.UniverseObject; import engine.clients.Client; import engine.resources.objects.SWGObject; @@ -38,7 +38,7 @@ public class GroupObject extends UniverseObject { private SWGObject lootMaster; private short groupLevel; private int lootMode; - private GroupMessageBuilder messageBuilder; + private transient GroupMessageBuilder messageBuilder; private int chatRoomId; public static int FREE_FOR_ALL = 0; @@ -165,4 +165,9 @@ public class GroupObject extends UniverseObject { destination.getSession().write(messageBuilder.buildBaseline6()); } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/guild/GuildObject.java b/src/resources/objects/guild/GuildObject.java index 7306cf99..fe01d97a 100644 --- a/src/resources/objects/guild/GuildObject.java +++ b/src/resources/objects/guild/GuildObject.java @@ -33,20 +33,17 @@ import resources.gcw.CurrentServerGCWZoneHistory; import resources.gcw.CurrentServerGCWZonePercent; import resources.gcw.OtherServerGCWZonePercent; import resources.guild.Guild; +import resources.objects.ObjectMessageBuilder; import resources.objects.SWGList; import resources.objects.SWGMap; import resources.objects.SWGMultiMap; -import resources.objects.cell.CellMessageBuilder; import resources.objects.universe.UniverseObject; import services.collections.ServerFirst; -import com.sleepycat.je.Environment; -import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; import engine.clients.Client; -import engine.resources.objects.IPersistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -71,19 +68,19 @@ public class GuildObject extends UniverseObject implements Serializable { private String STFName = ""; private String customName = ""; private int volume = 0; - private SWGList guildList = new SWGList(messageBuilder, 3, 4); + private SWGList guildList = new SWGList(getObjectID(), 3, 4); // GILD 6 private int serverId = 0x43; //private String STFName = "string_id_table"; private int unknown1 = 0; private short unknown2 = 0; - private SWGMap currentServerGCWZonePercentMap = new SWGMap(messageBuilder, 6, 2); - private SWGMap currentServerGCWTotalPercentMap = new SWGMap(messageBuilder, 6, 3); - private SWGMultiMap currentServerGCWZoneHistoryMap = new SWGMultiMap(messageBuilder, 6, 4); - private SWGMultiMap currentServerGCWTotalHistoryMap = new SWGMultiMap(messageBuilder, 6, 5); - private SWGMultiMap otherServerGCWZonePercentMap = new SWGMultiMap(messageBuilder, 6, 6); - private SWGMultiMap otherServerGCWTotalPercentMap = new SWGMultiMap(messageBuilder, 6, 7); + private SWGMap currentServerGCWZonePercentMap = new SWGMap(getObjectID(), 6, 2); + private SWGMap currentServerGCWTotalPercentMap = new SWGMap(getObjectID(), 6, 3); + private SWGMultiMap currentServerGCWZoneHistoryMap = new SWGMultiMap(getObjectID(), 6, 4); + private SWGMultiMap currentServerGCWTotalHistoryMap = new SWGMultiMap(getObjectID(), 6, 5); + private SWGMultiMap otherServerGCWZonePercentMap = new SWGMultiMap(getObjectID(), 6, 6); + private SWGMultiMap otherServerGCWTotalPercentMap = new SWGMultiMap(getObjectID(), 6, 7); private int unknown3 = 5; public GuildObject(NGECore core, long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { @@ -309,5 +306,8 @@ public class GuildObject extends UniverseObject implements Serializable { } } + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index 93da82cf..87cc8ea1 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -32,8 +32,8 @@ import engine.clients.Client; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; +import resources.objects.ObjectMessageBuilder; import resources.objects.creature.CreatureObject; -import resources.objects.guild.GuildMessageBuilder; import resources.objects.installation.InstallationMessageBuilder; import resources.objects.installation.InstallationObject; import resources.objects.resource.GalacticResource; @@ -48,8 +48,8 @@ public class HarvesterObject extends InstallationObject implements Serializable private static final long serialVersionUID = 1L; - private HarvesterMessageBuilder messageBuilder; - private InstallationMessageBuilder installationMessageBuilder; + private transient HarvesterMessageBuilder messageBuilder; + private transient InstallationMessageBuilder installationMessageBuilder; public final static byte HARVESTER_TYPE_MINERAL = 0; public final static byte HARVESTER_TYPE_CHEMICAL = 1; @@ -419,4 +419,9 @@ public class HarvesterObject extends InstallationObject implements Serializable //destination.getSession().write(installationMessageBuilder.buildBaseline9()); } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 090b985b..a31fc02e 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -29,16 +29,18 @@ import engine.clients.Client; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -import resources.objects.cell.CellMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.tangible.TangibleObject; @Entity(version=0) public class InstallationObject extends TangibleObject implements Serializable { private static final long serialVersionUID = 1L; + private transient InstallationMessageBuilder messageBuilder; public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ - super(objectID, planet, template, position, orientation); + super(objectID, planet, template, position, orientation); + messageBuilder = new InstallationMessageBuilder(this); } @Override @@ -49,6 +51,11 @@ public class InstallationObject extends TangibleObject implements Serializable { @Override public void initAfterDBLoad() { super.init(); + messageBuilder = new InstallationMessageBuilder(this); } - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } \ No newline at end of file diff --git a/src/resources/objects/intangible/IntangibleMessageBuilder.java b/src/resources/objects/intangible/IntangibleMessageBuilder.java index 1dd0af60..c71177be 100644 --- a/src/resources/objects/intangible/IntangibleMessageBuilder.java +++ b/src/resources/objects/intangible/IntangibleMessageBuilder.java @@ -21,6 +21,26 @@ ******************************************************************************/ package resources.objects.intangible; -public class IntangibleMessageBuilder { +import org.apache.mina.core.buffer.IoBuffer; + +import resources.objects.ObjectMessageBuilder; + +public class IntangibleMessageBuilder extends ObjectMessageBuilder { + + public IntangibleMessageBuilder(IntangibleObject intangibleObject) { + setObject(intangibleObject); + } + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + // TODO Auto-generated method stub + + } } diff --git a/src/resources/objects/intangible/IntangibleObject.java b/src/resources/objects/intangible/IntangibleObject.java index a0f4444d..6bb64e6f 100644 --- a/src/resources/objects/intangible/IntangibleObject.java +++ b/src/resources/objects/intangible/IntangibleObject.java @@ -23,7 +23,7 @@ package resources.objects.intangible; import java.io.Serializable; -import resources.objects.cell.CellMessageBuilder; +import resources.objects.ObjectMessageBuilder; import com.sleepycat.persist.model.Persistent; @@ -37,20 +37,23 @@ import engine.resources.scene.Quaternion; public class IntangibleObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - + private transient IntangibleMessageBuilder messageBuilder; private int genericInt; public IntangibleObject() { super(); + messageBuilder = new IntangibleMessageBuilder(this); } public IntangibleObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); + messageBuilder = new IntangibleMessageBuilder(this); } @Override public void initAfterDBLoad() { super.init(); + messageBuilder = new IntangibleMessageBuilder(this); } public int getGenericInt() { @@ -70,5 +73,9 @@ public class IntangibleObject extends SWGObject implements Serializable { // TODO Auto-generated method stub } - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/manufacture/ManufactureSchematicMessageBuilder.java b/src/resources/objects/manufacture/ManufactureSchematicMessageBuilder.java new file mode 100644 index 00000000..30c04def --- /dev/null +++ b/src/resources/objects/manufacture/ManufactureSchematicMessageBuilder.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.manufacture; + +import org.apache.mina.core.buffer.IoBuffer; + +import resources.objects.ObjectMessageBuilder; + +public class ManufactureSchematicMessageBuilder extends ObjectMessageBuilder { + + public ManufactureSchematicMessageBuilder(ManufactureSchematicObject object) { + setObject(object); + } + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/resources/objects/manufacture/ManufactureSchematicObject.java b/src/resources/objects/manufacture/ManufactureSchematicObject.java index 38d77857..b8532f00 100644 --- a/src/resources/objects/manufacture/ManufactureSchematicObject.java +++ b/src/resources/objects/manufacture/ManufactureSchematicObject.java @@ -21,10 +21,9 @@ ******************************************************************************/ package resources.objects.manufacture; - import java.io.Serializable; -import resources.objects.cell.CellMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.intangible.IntangibleObject; import com.sleepycat.persist.model.Persistent; @@ -42,19 +41,21 @@ import engine.resources.scene.Quaternion; public class ManufactureSchematicObject extends IntangibleObject implements Serializable { private static final long serialVersionUID = 1L; - //@NotPersistent - //private ManufactureSchematicMessageBuilder messageBuilder; + private transient ManufactureSchematicMessageBuilder messageBuilder; public ManufactureSchematicObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) { super(objectID, planet, position, orientation, template); - //messageBuilder = new ManufactureSchematicMessageBuilder(this); + messageBuilder = new ManufactureSchematicMessageBuilder(this); } @Override public void initAfterDBLoad() { super.init(); - //messageBuilder = new ManufactureSchematicMessageBuilder(this); + messageBuilder = new ManufactureSchematicMessageBuilder(this); + } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; } - } diff --git a/src/resources/objects/mission/MissionObject.java b/src/resources/objects/mission/MissionObject.java index 67d9cee4..a5e4d195 100644 --- a/src/resources/objects/mission/MissionObject.java +++ b/src/resources/objects/mission/MissionObject.java @@ -23,18 +23,14 @@ package resources.objects.mission; import java.io.Serializable; -import com.sleepycat.je.Environment; -import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; -import resources.common.BountyListItem; -import resources.objects.cell.CellMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.intangible.IntangibleObject; import resources.objects.waypoint.WaypointObject; import services.mission.MissionObjective; import engine.clients.Client; -import engine.resources.objects.IPersistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -326,5 +322,9 @@ public class MissionObject extends IntangibleObject implements Serializable { destination.getSession().write(messageBuilder.buildBaseline8()); destination.getSession().write(messageBuilder.buildBaseline9()); } - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index cc1d4cd9..02fe6db7 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -29,11 +29,11 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; +import resources.objects.ObjectMessageBuilder; import resources.objects.intangible.IntangibleObject; import resources.objects.resource.ResourceContainerObject; import resources.objects.tool.SurveyTool; import resources.objects.waypoint.WaypointObject; -import resources.objects.cell.CellMessageBuilder; import resources.objects.creature.CreatureObject; import com.sleepycat.persist.model.NotPersistent; @@ -908,4 +908,8 @@ public class PlayerObject extends IntangibleObject implements Serializable { this.callingCompanion = callingCompanion; } + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/resource/GalacticResource.java b/src/resources/objects/resource/GalacticResource.java index 01f0ef81..22aa0647 100644 --- a/src/resources/objects/resource/GalacticResource.java +++ b/src/resources/objects/resource/GalacticResource.java @@ -29,17 +29,13 @@ import java.util.Vector; import main.NGECore; import protocol.swg.SurveyMapUpdateMessage; import resources.objects.creature.CreatureObject; -import resources.objects.player.PlayerMessageBuilder; import resources.objects.player.PlayerObject; import resources.objects.waypoint.WaypointObject; -import com.sleepycat.je.Environment; -import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; import engine.clients.Client; -import engine.resources.objects.IPersistent; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; diff --git a/src/resources/objects/resource/ResourceContainerObject.java b/src/resources/objects/resource/ResourceContainerObject.java index 55642224..66ac4a80 100644 --- a/src/resources/objects/resource/ResourceContainerObject.java +++ b/src/resources/objects/resource/ResourceContainerObject.java @@ -21,7 +21,6 @@ ******************************************************************************/ package resources.objects.resource; - import java.io.Serializable; import main.NGECore; @@ -34,8 +33,8 @@ import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; +import resources.objects.ObjectMessageBuilder; import resources.objects.creature.CreatureObject; -import resources.objects.player.PlayerMessageBuilder; import resources.objects.tangible.TangibleObject; /** @@ -559,4 +558,9 @@ public class ResourceContainerObject extends TangibleObject implements Serializa destination.getSession().write(messageBuilder.buildDelta3()); } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/ship/ShipObject.java b/src/resources/objects/ship/ShipObject.java index 9bb96682..67d27246 100644 --- a/src/resources/objects/ship/ShipObject.java +++ b/src/resources/objects/ship/ShipObject.java @@ -25,17 +25,22 @@ import java.io.Serializable; import com.sleepycat.persist.model.Persistent; -import resources.objects.resource.ResourceContainerMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.tangible.TangibleObject; @Persistent(version=0) public class ShipObject extends TangibleObject implements Serializable { private static final long serialVersionUID = 1L; + private transient ObjectMessageBuilder messageBuilder = null; @Override public void initAfterDBLoad() { super.init(); } - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/staticobject/StaticObject.java b/src/resources/objects/staticobject/StaticObject.java index ff662fdc..a0c2de5c 100644 --- a/src/resources/objects/staticobject/StaticObject.java +++ b/src/resources/objects/staticobject/StaticObject.java @@ -23,7 +23,7 @@ package resources.objects.staticobject; import java.io.Serializable; -import resources.objects.resource.ResourceContainerMessageBuilder; +import resources.objects.ObjectMessageBuilder; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; @@ -71,5 +71,9 @@ public class StaticObject extends SWGObject implements Serializable { super.init(); messageBuilder = new StaticMessageBuilder(this); } - + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 53fa78e7..fb8fc9ef 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -42,8 +42,8 @@ import resources.common.OutOfBand; import resources.common.RGB; import resources.datatables.Options; import resources.loot.LootGroup; +import resources.objects.ObjectMessageBuilder; import resources.objects.creature.CreatureObject; -import resources.objects.staticobject.StaticMessageBuilder; import resources.visitors.IDManagerVisitor; import com.sleepycat.persist.model.NotPersistent; @@ -631,4 +631,9 @@ public class TangibleObject extends SWGObject implements Serializable { } + + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/tool/SurveyTool.java b/src/resources/objects/tool/SurveyTool.java index ab557446..a8fde661 100644 --- a/src/resources/objects/tool/SurveyTool.java +++ b/src/resources/objects/tool/SurveyTool.java @@ -35,7 +35,6 @@ import engine.resources.scene.Quaternion; import resources.objects.creature.CreatureObject; import resources.objects.resource.GalacticResource; import resources.objects.resource.ResourceConcentration; -import resources.objects.tangible.TangibleMessageBuilder; import resources.objects.tangible.TangibleObject; /** diff --git a/src/resources/objects/universe/UniverseObject.java b/src/resources/objects/universe/UniverseObject.java index 7502266a..841e300a 100644 --- a/src/resources/objects/universe/UniverseObject.java +++ b/src/resources/objects/universe/UniverseObject.java @@ -23,7 +23,7 @@ package resources.objects.universe; import java.io.Serializable; -import resources.objects.tangible.TangibleMessageBuilder; +import resources.objects.ObjectMessageBuilder; import com.sleepycat.persist.model.Persistent; @@ -37,7 +37,8 @@ import engine.resources.scene.Quaternion; public class UniverseObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - + private transient ObjectMessageBuilder messageBuilder = null; + public UniverseObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); } @@ -57,4 +58,8 @@ public class UniverseObject extends SWGObject implements Serializable { } + public ObjectMessageBuilder getMessageBuilder() { + return messageBuilder; + } + } diff --git a/src/resources/objects/waypoint/WaypointObject.java b/src/resources/objects/waypoint/WaypointObject.java index 15f2f00e..6cd72dca 100644 --- a/src/resources/objects/waypoint/WaypointObject.java +++ b/src/resources/objects/waypoint/WaypointObject.java @@ -24,7 +24,6 @@ package resources.objects.waypoint; import java.io.Serializable; import resources.objects.intangible.IntangibleObject; -import resources.objects.tangible.TangibleMessageBuilder; import com.sleepycat.persist.model.Persistent; @@ -37,7 +36,7 @@ import engine.resources.scene.Quaternion; public class WaypointObject extends IntangibleObject implements Serializable { private static final long serialVersionUID = 1L; - + private int cellId; // ??? private long locationNetworkId; private int planetCRC; diff --git a/src/resources/objects/weapon/WeaponObject.java b/src/resources/objects/weapon/WeaponObject.java index 98acf7ea..26115f42 100644 --- a/src/resources/objects/weapon/WeaponObject.java +++ b/src/resources/objects/weapon/WeaponObject.java @@ -24,7 +24,7 @@ package resources.objects.weapon; import java.io.Serializable; import resources.datatables.WeaponType; -import resources.objects.tangible.TangibleMessageBuilder; +import resources.objects.ObjectMessageBuilder; import resources.objects.tangible.TangibleObject; import com.sleepycat.persist.model.NotPersistent; @@ -224,5 +224,4 @@ public class WeaponObject extends TangibleObject implements Serializable { return false; } - }