// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.msg; import engine.Enum.GameObjectType; import engine.net.AbstractConnection; import engine.net.ByteBufferReader; import engine.net.ByteBufferWriter; import engine.net.client.Protocol; import engine.objects.AbstractWorldObject; public class TeleportToPointMsg extends ClientNetMsg { private int sourceType; private int sourceUUID; private float endLat; private float endLon; private float endAlt; private int targetType; private int targetUUID; private int unknown01; private int unknown02; /** * This is the general purpose constructor. */ public TeleportToPointMsg(AbstractWorldObject ago, float endLat, float endAlt, float endLon, long targetID, int unknown01, int unknown02) { super(Protocol.TELEPORT); this.sourceType = ago.getObjectType().ordinal(); this.sourceUUID = ago.getObjectUUID(); this.endLat = endLat; this.endAlt = endAlt; this.endLon = endLon; if (targetID != 0) { this.targetType = GameObjectType.Building.ordinal(); this.targetUUID = (int) targetID; } else { this.targetType = 0; this.targetUUID = 0; } this.unknown01 = unknown01; this.unknown02 = unknown02; if (ago.region != null) { this.targetType = GameObjectType.Building.ordinal(); this.targetUUID = ago.region.parentBuildingID; this.unknown01 = ago.region.level; this.unknown02 = ago.region.room; } } /** * This is the general purpose constructor. */ public TeleportToPointMsg() { super(Protocol.TELEPORT); } /** * This constructor is used by NetMsgFactory. It attempts to deserialize the * ByteBuffer into a message. If a BufferUnderflow occurs (based on reading * past the limit) then this constructor Throws that Exception to the * caller. */ public TeleportToPointMsg(AbstractConnection origin, ByteBufferReader reader) { super(Protocol.TELEPORT, origin, reader); } /** * Serializes the subclass specific items to the supplied NetMsgWriter. */ @Override protected void _serialize(ByteBufferWriter writer) { writer.putInt(this.sourceType); writer.putInt(this.sourceUUID); writer.putFloat(this.endLat); writer.putFloat(this.endAlt); writer.putFloat(this.endLon); writer.putInt(this.targetType); writer.putInt(this.targetUUID); writer.putInt(this.unknown01); writer.putInt(this.unknown02); } /** * Deserializes the subclass specific items from the supplied NetMsgReader. */ @Override protected void _deserialize(ByteBufferReader reader) { this.sourceType = reader.getInt(); this.sourceUUID = reader.getInt(); this.endLat = reader.getInt(); this.endAlt = reader.getInt(); this.endLon = reader.getInt(); this.targetType = reader.getInt(); this.targetUUID = reader.getInt(); this.unknown01 = reader.getInt(); this.unknown02 = reader.getInt(); } /** * @return the endLat */ public float getEndLat() { return endLat; } /** * @param endLat the endLat to set */ public void setEndLat(float endLat) { this.endLat = endLat; } /** * @return the endLon */ public float getEndLon() { return endLon; } /** * @param endLon the endLon to set */ public void setEndLon(float endLon) { this.endLon = endLon; } /** * @return the endAlt */ public float getEndAlt() { return endAlt; } /** * @param endAlt the endAlt to set */ public void setEndAlt(float endAlt) { this.endAlt = endAlt; } /** * @return the unknown01 */ public int getUnknown01() { return unknown01; } /** * @param unknown01 the unknown01 to set */ public void setUnknown01(int unknown01) { this.unknown01 = unknown01; } /** * @return the unknown02 */ public int getUnknown02() { return unknown02; } /** * @param unknown02 the unknown02 to set */ public void setUnknown02(int unknown02) { this.unknown02 = unknown02; } public int getSourceType() { return sourceType; } public void setSourceType(int sourceType) { this.sourceType = sourceType; } public int getSourceUUID() { return sourceUUID; } public void setSourceUUID(int sourceUUID) { this.sourceUUID = sourceUUID; } public int getTargetType() { return targetType; } public void setTargetType(int targetType) { this.targetType = targetType; } public int getTargetUUID() { return targetUUID; } public void setTargetUUID(int targetUUID) { this.targetUUID = targetUUID; } }