package net.scapeemulator.game.msg.encoder; import io.netty.buffer.ByteBufAllocator; import java.io.IOException; import net.scapeemulator.game.msg.MessageEncoder; import net.scapeemulator.game.msg.impl.SetPositionMessage; import net.scapeemulator.game.net.game.DataTransformation; import net.scapeemulator.game.net.game.DataType; import net.scapeemulator.game.net.game.GameFrame; import net.scapeemulator.game.net.game.GameFrameBuilder; public final class SetPositionMessageEncoder extends MessageEncoder<SetPositionMessage> { public SetPositionMessageEncoder() { super(SetPositionMessage.class); } @Override public GameFrame encode(ByteBufAllocator alloc, SetPositionMessage message) throws IOException { int height = 0; int flag = 1; GameFrameBuilder builder = new GameFrameBuilder(alloc, 13); builder.put(DataType.BYTE, DataTransformation.SUBTRACT, message.getX()); builder.put(DataType.BYTE, DataTransformation.ADD, height << 1 | flag); builder.put(DataType.BYTE, message.getY()); return builder.toGameFrame(); } }