From 737b24d3b901f5f67ee29c6cc12338ff84a55720 Mon Sep 17 00:00:00 2001 From: Treeku Date: Wed, 14 May 2014 20:39:03 +0100 Subject: [PATCH] Changed guildList to a Set, changed STAO --- scripts/conversation/respec.py | 104 ++++++------------ src/resources/objects/guild/GuildObject.java | 4 +- .../objects/intangible/IntangibleObject.java | 2 - .../staticobject/StaticMessageBuilder.java | 49 --------- .../objects/staticobject/StaticObject.java | 84 ++++++++------ .../objects/tangible/TangibleObject.java | 9 +- src/services/object/ObjectService.java | 5 + 7 files changed, 97 insertions(+), 160 deletions(-) diff --git a/scripts/conversation/respec.py b/scripts/conversation/respec.py index f929002e..35ab97b6 100644 --- a/scripts/conversation/respec.py +++ b/scripts/conversation/respec.py @@ -6,91 +6,55 @@ import sys def startConversation(core, actor, npc): convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_31') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_32') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_33') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) + + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_31'))) + options = Vector() - options.add(option1) - options.add(option2) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_32')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_33')), 1)) convSvc.sendConversationOptions(actor, npc, options, handleFirstScreen) - return + return + def handleFirstScreen(core, actor, npc, selection): - - if selection == 0: - # respec - # TODO: check for prices - convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_58') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_60') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_64') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) - options = Vector() - options.add(option1) - options.add(option2) - convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) - return - if selection == 1: - # expertise reset - # TODO: check for prices - convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_35') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_71') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_72') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) - options = Vector() - options.add(option1) - options.add(option2) - convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) - - - return + convSvc = core.conversationService -def handleRespecScreen(core, actor, npc, selection): + # TODO: check for prices + + if selection == 0: # respec + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_58'))) + + options = Vector() + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_60')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_64')), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) + + if selection == 1: # expertise reset + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller:s_35'))) + + options = Vector() + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_71')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller:s_72')), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) + + return +def handleRespecScreen(core, actor, npc, selection): if selection == 0: core.skillService.sendRespecWindow(actor) - + core.conversationService.handleEndConversation(actor, npc) - + return - def handleResetScreen(core, actor, npc, selection): - if selection == 0: core.skillService.resetExpertise(actor) - - core.conversationService.handleEndConversation(actor, npc) - - return + core.conversationService.handleEndConversation(actor, npc) + + return + def endConversation(core, actor, npc): core.conversationService.sendStopConversation(actor, npc, 'conversation/respecseller', 's_38') return - \ No newline at end of file diff --git a/src/resources/objects/guild/GuildObject.java b/src/resources/objects/guild/GuildObject.java index 7f1f2315..d0c0ed62 100644 --- a/src/resources/objects/guild/GuildObject.java +++ b/src/resources/objects/guild/GuildObject.java @@ -37,6 +37,7 @@ import resources.objects.ObjectMessageBuilder; import resources.objects.SWGList; import resources.objects.SWGMap; import resources.objects.SWGMultiMap; +import resources.objects.SWGSet; import resources.objects.universe.UniverseObject; import services.collections.ServerFirst; import engine.clients.Client; @@ -62,7 +63,6 @@ public class GuildObject extends UniverseObject implements Serializable { public void initAfterDBLoad() { super.init(); - messageBuilder = new GuildMessageBuilder(this); } @Override @@ -77,7 +77,7 @@ public class GuildObject extends UniverseObject implements Serializable { @Override public Baseline getBaseline3() { Baseline baseline = super.getBaseline3(); - baseline.put("guildList", new SWGList(this, 3, 4, false)); + baseline.put("guildList", new SWGSet(this, 3, 4, false)); return baseline; } diff --git a/src/resources/objects/intangible/IntangibleObject.java b/src/resources/objects/intangible/IntangibleObject.java index 0e1d788f..df6843b3 100644 --- a/src/resources/objects/intangible/IntangibleObject.java +++ b/src/resources/objects/intangible/IntangibleObject.java @@ -41,7 +41,6 @@ public class IntangibleObject extends SWGObject implements Serializable { public IntangibleObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); - messageBuilder = new IntangibleMessageBuilder(this); } public IntangibleObject() { @@ -50,7 +49,6 @@ public class IntangibleObject extends SWGObject implements Serializable { public void initAfterDBLoad() { super.init(); - messageBuilder = new IntangibleMessageBuilder(this); } public Baseline getOtherVariables() { diff --git a/src/resources/objects/staticobject/StaticMessageBuilder.java b/src/resources/objects/staticobject/StaticMessageBuilder.java index ffcfe443..c412a78d 100644 --- a/src/resources/objects/staticobject/StaticMessageBuilder.java +++ b/src/resources/objects/staticobject/StaticMessageBuilder.java @@ -21,11 +21,8 @@ ******************************************************************************/ package resources.objects.staticobject; -import java.nio.ByteOrder; import java.util.Map; -import org.apache.mina.core.buffer.IoBuffer; - import resources.objects.ObjectMessageBuilder; import engine.resources.objects.Builder; @@ -39,52 +36,6 @@ public class StaticMessageBuilder extends ObjectMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 4); - buffer.putInt(0); - //buffer.putShort((short) 0); - - buffer.put(getAsciiString(object.getStfFilename())); - buffer.putInt(0); - //buffer.putShort((short) 0); - buffer.put(getAsciiString(object.getStfName())); - buffer.putInt(0); - buffer.putInt(0xFF); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("STAO", (byte) 3, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline6() { - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 2); - buffer.putInt(0x43); - //buffer.putShort((short) 0); - buffer.put(getAsciiString(object.getDetailFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(object.getDetailName())); - // buffer.putShort((short) 0); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("STAO", (byte) 6, buffer, size); - - return buffer; - } - @Override public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline3(baselineBuilders, deltaBuilders); diff --git a/src/resources/objects/staticobject/StaticObject.java b/src/resources/objects/staticobject/StaticObject.java index d116f7cb..1131aafd 100644 --- a/src/resources/objects/staticobject/StaticObject.java +++ b/src/resources/objects/staticobject/StaticObject.java @@ -25,57 +25,79 @@ import java.io.Serializable; import org.apache.mina.core.buffer.IoBuffer; -import resources.objects.ObjectMessageBuilder; - -import com.sleepycat.persist.model.NotPersistent; -import com.sleepycat.persist.model.Persistent; - import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=0) public class StaticObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - @NotPersistent + private transient StaticMessageBuilder messageBuilder; - - public StaticObject() { - super(); - messageBuilder = new StaticMessageBuilder(this); - } - + public StaticObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); - messageBuilder = new StaticMessageBuilder(this); } - - @Override - public void sendBaselines(Client destination) { - - - if(destination == null || destination.getSession() == null) { - System.out.println("NULL destination"); - return; - } - - //destination.getSession().write(messageBuilder.buildBaseline3()); - //destination.getSession().write(messageBuilder.buildBaseline6()); - - + + public StaticObject() { + super(); } @Override public void initAfterDBLoad() { super.init(); - messageBuilder = new StaticMessageBuilder(this); } - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; + @Override + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + return baseline; + } + + @Override + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + return baseline; + } + + @Override + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + return baseline; + } + + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); + } + + @Override + public StaticMessageBuilder getMessageBuilder() { + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new StaticMessageBuilder(this); + } + + return messageBuilder; + } + } + + @Override + public void sendBaselines(Client destination) { + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); + + Client parent = ((getGrandparent() == null) ? null : getGrandparent().getClient()); + + if (parent != null && destination == parent) { + destination.getSession().write(getBaseline(8).getBaseline()); + destination.getSession().write(getBaseline(9).getBaseline()); + } + } } @Override diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 289bcf04..1e2b13b3 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -48,7 +48,6 @@ import resources.objects.ObjectMessageBuilder; import resources.objects.SWGList; import resources.objects.SWGSet; import resources.objects.creature.CreatureObject; - import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.IDManagerVisitor; import engine.clients.Client; @@ -83,27 +82,23 @@ public class TangibleObject extends SWGObject implements Serializable { public TangibleObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { super(objectID, planet, position, orientation, template); - messageBuilder = new TangibleMessageBuilder(this); if (this.getClass().getSimpleName().equals("TangibleObject")) setIntAttribute("volume", 1); otherVariables = getOtherVariables(); // FIXME temp } public TangibleObject(long objectID, Planet planet, String template) { super(objectID, planet, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0), template); - messageBuilder = new TangibleMessageBuilder(this); if (this.getClass().getSimpleName().equals("TangibleObject")) setIntAttribute("volume", 1); otherVariables = getOtherVariables(); // FIXME temp } public TangibleObject() { super(); - messageBuilder = new TangibleMessageBuilder(this); } public void initAfterDBLoad() { super.init(); defendersList = new Vector(); - messageBuilder = new TangibleMessageBuilder(this); } public Baseline getOtherVariables() { @@ -140,11 +135,13 @@ public class TangibleObject extends SWGObject implements Serializable { return baseline; } + @Override public Baseline getBaseline8() { Baseline baseline = super.getBaseline8(); return baseline; } + @Override public Baseline getBaseline9() { Baseline baseline = super.getBaseline9(); return baseline; @@ -168,7 +165,7 @@ public class TangibleObject extends SWGObject implements Serializable { } public byte[] getCustomization() { - return (byte[]) baseline3.get("customization"); + return (byte[]) getBaseline(3).get("customization"); } public void setCustomization(byte[] customization) { diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 05f19b24..50a4fcb3 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -1138,6 +1138,7 @@ public class ObjectService implements INetworkDispatch { containers.add(objectId); object = createObject(template, objectId, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, true, false); object.setAttachment("childObjects", null); + /*if (!duplicate.containsValue(objectId)) { ((BuildingObject) object).createTransaction(core.getBuildingODB().getEnvironment()); core.getBuildingODB().put((BuildingObject) object, Long.class, BuildingObject.class, ((BuildingObject) object).getTransaction()); @@ -1176,6 +1177,10 @@ public class ObjectService implements INetworkDispatch { object.setContainerPermissions(WorldPermissions.WORLD_PERMISSIONS); } + if (object != null && object instanceof TangibleObject && !(object instanceof CreatureObject)) { + ((TangibleObject) object).setStaticObject(true); + } + //System.out.println("Spawning: " + template + " at: X:" + object.getPosition().x + " Y: " + object.getPosition().y + " Z: " + object.getPosition().z); if(object != null) object.setAttachment("isBuildout", new Boolean(true));