package net.scapeemulator.game.msg.decoder.item;
import java.io.IOException;
import net.scapeemulator.game.msg.MessageDecoder;
import net.scapeemulator.game.msg.impl.SwapItemsMessage;
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.GameFrameReader;
public final class SwapItemsMessageDecoder extends MessageDecoder<SwapItemsMessage> {
public SwapItemsMessageDecoder() {
super(231);
}
@Override
public SwapItemsMessage decode(GameFrame frame) throws IOException {
GameFrameReader reader = new GameFrameReader(frame);
int source = (int) reader.getUnsigned(DataType.SHORT);
int inter = (int) reader.getSigned(DataType.INT, DataOrder.LITTLE);
int id = (inter >> 16) & 0xFFFF;
int slot = inter & 0xFFFF;
int destination = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
int type = (int) reader.getUnsigned(DataType.BYTE, DataTransformation.SUBTRACT);
return new SwapItemsMessage(id, slot, source, destination, type);
}
}