From ae37a24380954f931c586372abfe299c2f783bcf Mon Sep 17 00:00:00 2001 From: Obique Date: Sat, 21 Feb 2015 15:06:08 -0600 Subject: [PATCH] Fixed sitting except for chairs --- .../callbacks/SitOnObjectCmdCallback.java | 15 +++++--------- .../commands/callbacks/StandCmdCallback.java | 20 +++++++++++++++++++ .../objects/creature/CreatureObject.java | 2 +- src/services/CoreManager.java | 2 +- src/services/commands/CommandService.java | 3 ++- src/services/objects/ObjectManager.java | 6 ++++++ 6 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 src/resources/commands/callbacks/StandCmdCallback.java diff --git a/src/resources/commands/callbacks/SitOnObjectCmdCallback.java b/src/resources/commands/callbacks/SitOnObjectCmdCallback.java index 07aeab46b..d6f4bc663 100644 --- a/src/resources/commands/callbacks/SitOnObjectCmdCallback.java +++ b/src/resources/commands/callbacks/SitOnObjectCmdCallback.java @@ -2,7 +2,6 @@ package resources.commands.callbacks; import java.util.List; -import network.packets.swg.zone.object_controller.ObjectController; import network.packets.swg.zone.object_controller.SitOnObject; import resources.Location; import resources.Posture; @@ -13,10 +12,9 @@ import resources.player.Player; import services.objects.ObjectManager; public class SitOnObjectCmdCallback implements ICmdCallback { - + @Override public void execute(ObjectManager objManager, Player player,SWGObject target, String args) { - System.out.println(args); CreatureObject creature = (CreatureObject) player.getCreatureObject(); if (creature.getPosture() == Posture.DEAD || creature.getPosture() == Posture.INCAPACITATED) @@ -32,25 +30,22 @@ public class SitOnObjectCmdCallback implements ICmdCallback { float z = Float.valueOf(cmd[2]); long cellid = Long.valueOf(cmd[3]); - sot = new SitOnObject(cellid,(long) objectID, x, y, z); + sot = new SitOnObject(objectID, cellid, x, y, z); creature.setStatesBitmask(32768); } else { Location loc = creature.getLocation(); - sot = new SitOnObject(0,(long) objectID, (float) loc.getX(), (float) loc.getY(), (float) loc.getZ()); + sot = new SitOnObject(objectID, 0, (float) loc.getX(), (float) loc.getY(), (float) loc.getZ()); } creature.setPosture(Posture.SITTING); - creature.setTurnScale(0); - creature.setMovementScale(0); - creature.setAccelScale(0); - //ObjectController cont = new ObjectController(SitOnObject.CRC, player.getCreatureObject().getObjectId(), sot, 27); player.sendPacket(sot); + List observers = player.getCreatureObject().getObservers(); for (Player observer : observers) { if (observer.getCreatureObject() == null) continue; - observer.sendPacket(sot); + observer.sendPacket(new SitOnObject(observer.getCreatureObject().getObjectId(), sot)); } } diff --git a/src/resources/commands/callbacks/StandCmdCallback.java b/src/resources/commands/callbacks/StandCmdCallback.java new file mode 100644 index 000000000..1656acb34 --- /dev/null +++ b/src/resources/commands/callbacks/StandCmdCallback.java @@ -0,0 +1,20 @@ +package resources.commands.callbacks; + +import network.packets.swg.zone.object_controller.PostureUpdate; +import resources.Posture; +import resources.commands.ICmdCallback; +import resources.objects.SWGObject; +import resources.objects.creature.CreatureObject; +import resources.player.Player; +import services.objects.ObjectManager; + +public class StandCmdCallback implements ICmdCallback { + + @Override + public void execute(ObjectManager objManager, Player player, SWGObject target, String args) { + CreatureObject creature = (CreatureObject) player.getCreatureObject(); + creature.setPosture(Posture.UPRIGHT); + creature.sendObservers(new PostureUpdate(creature.getObjectId(), Posture.UPRIGHT)); + } + +} diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 7fb4a27b5..de7ff8fc5 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -201,7 +201,7 @@ public class CreatureObject extends TangibleObject { public void setPosture(Posture posture) { this.posture = posture; - sendDelta(3, 14, posture.getId()); + sendDelta(3, 13, posture.getId()); } public void setRace(Race race) { diff --git a/src/services/CoreManager.java b/src/services/CoreManager.java index a944a2bd0..43b413608 100644 --- a/src/services/CoreManager.java +++ b/src/services/CoreManager.java @@ -32,7 +32,7 @@ import services.galaxy.GalacticManager; public class CoreManager extends Manager { private static final int galaxyId = 1; - private static final boolean debugOutput = false; + private static final boolean debugOutput = true; private static PrintStream packetOutput; static { diff --git a/src/services/commands/CommandService.java b/src/services/commands/CommandService.java index 8cbf2bdb4..5f8c9febc 100644 --- a/src/services/commands/CommandService.java +++ b/src/services/commands/CommandService.java @@ -55,7 +55,7 @@ public class CommandService extends Service { } // TODO: Call Command intent to allow other services/managers to perform a command callback } - + private void handleCommandRequest(Player player, ObjectManager objManager, CommandQueueEnqueue request) { if (!commands.containsKey(request.getCommandCrc())) return; @@ -122,5 +122,6 @@ public class CommandService extends Service { registerCallback("getAttributesBatch", new AttributesCmdCallback()); registerCallback("socialInternal", new SocialInternalCmdCallback()); registerCallback("sitServer", new SitOnObjectCmdCallback()); + registerCallback("stand", new StandCmdCallback()); } } diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 9cafbe426..734fd289b 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -21,7 +21,9 @@ import network.packets.swg.zone.insertion.CmdStartScene; import network.packets.swg.zone.insertion.SelectCharacter; import network.packets.swg.zone.object_controller.DataTransform; import network.packets.swg.zone.object_controller.ObjectController; +import network.packets.swg.zone.object_controller.PostureUpdate; import resources.Location; +import resources.Posture; import resources.Race; import resources.Terrain; import resources.client_info.ClientFactory; @@ -233,6 +235,10 @@ public class ObjectManager extends Manager { updateAwarenessForObject(obj); addToQuadTree(obj); + if (obj instanceof CreatureObject && transform.getSpeed() > 1E-3) { + ((CreatureObject) obj).setPosture(Posture.UPRIGHT); + ((CreatureObject) obj).sendObservers(new PostureUpdate(obj.getObjectId(), Posture.UPRIGHT)); + } obj.sendDataTransforms(transform); }