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.ScriptMessage;
import net.scapeemulator.game.net.game.DataType;
import net.scapeemulator.game.net.game.GameFrame;
import net.scapeemulator.game.net.game.GameFrame.Type;
import net.scapeemulator.game.net.game.GameFrameBuilder;
public final class ScriptMessageEncoder extends MessageEncoder<ScriptMessage> {
public ScriptMessageEncoder() {
super(ScriptMessage.class);
}
@Override
public GameFrame encode(ByteBufAllocator alloc, ScriptMessage message) throws IOException {
String types = message.getTypes();
Object[] parameters = message.getParameters();
GameFrameBuilder builder = new GameFrameBuilder(alloc, 115, Type.VARIABLE_SHORT);
builder.put(DataType.SHORT, message.getId2());
builder.putString(types);
if (parameters.length > 0) {
for (int i = types.length() - 1; i >= 0; i--) {
if (types.charAt(i) == 's') {
builder.putString((String) parameters[types.length() - 1 - i]);
} else {
builder.put(DataType.INT, ((Integer) parameters[types.length() - 1 - i]));
}
}
}
builder.put(DataType.INT, message.getId());
return builder.toGameFrame();
}
}