Add RemoveObjectMessage.

This commit is contained in:
Major-
2015-03-03 20:12:09 +00:00
parent 2f1310c8b6
commit de697d99f4
9 changed files with 147 additions and 7 deletions
@@ -0,0 +1,76 @@
package org.apollo.game.message.impl;
import org.apollo.game.message.Message;
import org.apollo.game.model.entity.GameObject;
/**
* A {@link Message} sent to the client to remove an object from a tile.
*
* @author Major
*/
public final class RemoveObjectMessage extends Message {
/**
* The orientation of the object.
*/
private final int orientation;
/**
* The position of the object.
*/
private final int positionOffset;
/**
* The type of the object.
*/
private final int type;
/**
* Creates the RemoveObjectMessage.
*
* @param object The {@link GameObject} to send.
*/
public RemoveObjectMessage(GameObject object) {
this(object, 0);
}
/**
* Creates the RemoveObjectMessage.
*
* @param object The {@link GameObject} to send.
* @param positionOffset The offset of the object's position from the sector's central position.
*/
public RemoveObjectMessage(GameObject object, int positionOffset) {
this.positionOffset = positionOffset;
this.type = object.getType();
this.orientation = object.getOrientation();
}
/**
* Gets the orientation of the object.
*
* @return The orientation.
*/
public int getOrientation() {
return orientation;
}
/**
* Gets the position offset of the object.
*
* @return The position offset.
*/
public int getPositionOffset() {
return positionOffset;
}
/**
* Gets the orientation of the object.
*
* @return The type.
*/
public int getType() {
return type;
}
}
@@ -31,15 +31,25 @@ public final class SendObjectMessage extends Message {
private final int type;
/**
* Creates the send object message.
* Creates the SendObjectMessage.
*
* @param object The {@link GameObject} to send.
*/
public SendObjectMessage(GameObject object) {
this(object, 0);
}
/**
* Creates the SendObjectMessage.
*
* @param object The {@link GameObject} to send.
* @param positionOffset The offset of the object's position from the sector's central position.
*/
public SendObjectMessage(GameObject object, int positionOffset) {
this.id = object.getId();
this.positionOffset = 0;
this.positionOffset = positionOffset;
this.type = object.getType();
this.orientation = object.getRotation();
this.orientation = object.getOrientation();
}
/**
@@ -69,7 +69,7 @@ public final class GameObject extends Entity {
*
* @return The orientation.
*/
public int getRotation() {
public int getOrientation() {
return packed & 0x3;
}
@@ -89,7 +89,7 @@ public final class GameObject extends Entity {
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("id", getId()).add("type", getType()).add("rotation", getRotation()).toString();
return MoreObjects.toStringHelper(this).add("id", getId()).add("type", getType()).add("orientation", getOrientation()).toString();
}
}
@@ -24,6 +24,7 @@ import org.apollo.game.message.impl.OpenSidebarMessage;
import org.apollo.game.message.impl.PlayerSynchronizationMessage;
import org.apollo.game.message.impl.PositionMessage;
import org.apollo.game.message.impl.PrivacyOptionMessage;
import org.apollo.game.message.impl.RemoveObjectMessage;
import org.apollo.game.message.impl.RemoveTileItemMessage;
import org.apollo.game.message.impl.SectorChangeMessage;
import org.apollo.game.message.impl.SendFriendMessage;
@@ -206,6 +207,7 @@ public final class Release317 extends Release {
register(UpdateTileItemMessage.class, new UpdateTileItemMessageEncoder());
register(RemoveTileItemMessage.class, new RemoveTileItemMessageEncoder());
register(SendObjectMessage.class, new SendObjectMessageEncoder());
register(RemoveObjectMessage.class, new RemoveObjectMessageEncoder());
register(ForwardPrivateChatMessage.class, new ForwardPrivateChatMessageEncoder());
register(FriendServerStatusMessage.class, new FriendServerStatusMessageEncoder());
@@ -0,0 +1,25 @@
package org.apollo.net.release.r317;
import org.apollo.game.message.impl.RemoveObjectMessage;
import org.apollo.net.codec.game.DataTransformation;
import org.apollo.net.codec.game.DataType;
import org.apollo.net.codec.game.GamePacket;
import org.apollo.net.codec.game.GamePacketBuilder;
import org.apollo.net.release.MessageEncoder;
/**
* A {@link MessageEncoder} for the {@link RemoveObjectMessage}.
*
* @author Major
*/
public final class RemoveObjectMessageEncoder extends MessageEncoder<RemoveObjectMessage> {
@Override
public GamePacket encode(RemoveObjectMessage message) {
GamePacketBuilder builder = new GamePacketBuilder(101);
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getType() << 2 | message.getOrientation());
builder.put(DataType.BYTE, message.getPositionOffset());
return builder.toGamePacket();
}
}
@@ -20,7 +20,7 @@ public final class SendObjectMessageEncoder extends MessageEncoder<SendObjectMes
GamePacketBuilder builder = new GamePacketBuilder(151);
builder.put(DataType.BYTE, DataTransformation.ADD, message.getPositionOffset());
builder.put(DataType.SHORT, DataOrder.LITTLE, message.getId());
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getType() << 2 + message.getOrientation());
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getType() << 2 | message.getOrientation());
return builder.toGamePacket();
}
@@ -24,6 +24,7 @@ import org.apollo.game.message.impl.OpenSidebarMessage;
import org.apollo.game.message.impl.PlayerSynchronizationMessage;
import org.apollo.game.message.impl.PositionMessage;
import org.apollo.game.message.impl.PrivacyOptionMessage;
import org.apollo.game.message.impl.RemoveObjectMessage;
import org.apollo.game.message.impl.RemoveTileItemMessage;
import org.apollo.game.message.impl.SectorChangeMessage;
import org.apollo.game.message.impl.SendFriendMessage;
@@ -202,6 +203,7 @@ public final class Release377 extends Release {
register(UpdateTileItemMessage.class, new UpdateTileItemMessageEncoder());
register(RemoveTileItemMessage.class, new RemoveTileItemMessageEncoder());
register(SendObjectMessage.class, new SendObjectMessageEncoder());
register(RemoveObjectMessage.class, new RemoveObjectMessageEncoder());
register(ForwardPrivateChatMessage.class, new ForwardPrivateChatMessageEncoder());
register(FriendServerStatusMessage.class, new FriendServerStatusMessageEncoder());
@@ -0,0 +1,25 @@
package org.apollo.net.release.r377;
import org.apollo.game.message.impl.RemoveObjectMessage;
import org.apollo.net.codec.game.DataTransformation;
import org.apollo.net.codec.game.DataType;
import org.apollo.net.codec.game.GamePacket;
import org.apollo.net.codec.game.GamePacketBuilder;
import org.apollo.net.release.MessageEncoder;
/**
* A {@link MessageEncoder} for the {@link RemoveObjectMessage}.
*
* @author Major
*/
public final class RemoveObjectMessageEncoder extends MessageEncoder<RemoveObjectMessage> {
@Override
public GamePacket encode(RemoveObjectMessage message) {
GamePacketBuilder builder = new GamePacketBuilder(101);
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getPositionOffset());
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getType() << 2 | message.getOrientation());
return builder.toGamePacket();
}
}
@@ -18,7 +18,7 @@ public final class SendObjectMessageEncoder extends MessageEncoder<SendObjectMes
@Override
public GamePacket encode(SendObjectMessage message) {
GamePacketBuilder builder = new GamePacketBuilder(152);
builder.put(DataType.BYTE, DataTransformation.NEGATE, message.getType() << 2 + message.getOrientation());
builder.put(DataType.BYTE, DataTransformation.NEGATE, message.getType() << 2 | message.getOrientation());
builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getId());
builder.put(DataType.BYTE, DataTransformation.ADD, message.getPositionOffset());
return builder.toGamePacket();