diff --git a/src/resources/objects/waypoint/WaypointObject.java b/src/resources/objects/waypoint/WaypointObject.java new file mode 100644 index 000000000..d5b9378da --- /dev/null +++ b/src/resources/objects/waypoint/WaypointObject.java @@ -0,0 +1,96 @@ +package resources.objects.waypoint; + +import network.packets.swg.zone.SceneEndBaselines; +import network.packets.swg.zone.baselines.Baseline.BaselineType; +import resources.network.BaselineBuilder; +import resources.objects.intangible.IntangibleObject; +import resources.player.Player; + +public class WaypointObject extends IntangibleObject { + + private int cellNumber; + private long targetId = 0; + private String name = "Waypoint"; + private int color = 1; + private boolean active = true; + + public WaypointObject(long objectId) { + super(objectId); + } + + + public int getCellNumber() { + return cellNumber; + } + + + public void setCellNumber(int cellNumber) { + this.cellNumber = cellNumber; + } + + + public long getTargetId() { + return targetId; + } + + + public void setTargetId(long targetId) { + this.targetId = targetId; + } + + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public int getColor() { + return color; + } + + + public void setColor(int color) { + // BLUE,GREEN,ORANGE,YELLOW,PURPLE,WHITE,MULTICOLOR + this.color = color; + } + + + public boolean isActive() { + return active; + } + + + public void setActive(boolean active) { + this.active = active; + } + + + public void createBaseline3(Player target, BaselineBuilder bb) { + super.createBaseline3(target, bb); + bb.addInt(cellNumber); + bb.addFloat((float) getLocation().getX()); + bb.addFloat((float) getLocation().getY()); + bb.addFloat((float) getLocation().getZ()); + bb.addLong(targetId); // unsure when this is anything but 0, have yet to see it change + bb.addInt(getLocation().getTerrain().getCrc()); + bb.addUnicode(name); + bb.addByte(color); + bb.addBoolean(active); + } + + public void createObject(Player target) { + super.sendSceneCreateObject(target); + + BaselineBuilder bb = new BaselineBuilder(this, BaselineType.WAYP, 3); + createBaseline3(target, bb); + bb.sendTo(target); + + createChildrenObjects(target); + target.sendPacket(new SceneEndBaselines(getObjectId())); + } +} diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index cc8851515..cd2190cfe 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -27,6 +27,7 @@ import resources.objects.intangible.IntangibleObject; import resources.objects.player.PlayerObject; import resources.objects.quadtree.QuadTree; import resources.objects.tangible.TangibleObject; +import resources.objects.waypoint.WaypointObject; import resources.player.Player; import services.player.PlayerManager; @@ -132,6 +133,7 @@ public class ObjectManager extends Manager { case "player": return createPlayerObject(objectId, template); case "tangible": return createTangibleObject(objectId, template); case "intangible": return createIntangibleObject(objectId, template); + case "waypoint": return createWaypointObject(objectId, template); case "weapon": break; case "building": break; case "cell": break; @@ -161,4 +163,7 @@ public class ObjectManager extends Manager { return new IntangibleObject(objectId); } + private WaypointObject createWaypointObject(long objectId, String template) { + return new WaypointObject(objectId); + } }