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.ScriptIntMessage;
import net.scapeemulator.game.net.game.DataOrder;
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 ScriptIntMessageEncoder extends MessageEncoder<ScriptIntMessage> {
public ScriptIntMessageEncoder() {
super(ScriptIntMessage.class);
}
@Override
public GameFrame encode(ByteBufAllocator alloc, ScriptIntMessage message) throws IOException {
int id = message.getId();
int value = message.getValue();
if (value >= -128 && value <= 127) {
GameFrameBuilder builder = new GameFrameBuilder(alloc, 65);
builder.put(DataType.SHORT, DataOrder.LITTLE, 0);
builder.put(DataType.BYTE, DataTransformation.NEGATE, value);
builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, id);
return builder.toGameFrame();
} else {
GameFrameBuilder builder = new GameFrameBuilder(alloc, 69);
builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, 0);
builder.put(DataType.INT, value);
builder.put(DataType.SHORT, DataTransformation.ADD, id);
return builder.toGameFrame();
}
}
}