package net.scapeemulator.game.msg.decoder;
import java.io.IOException;
import net.scapeemulator.game.msg.MessageDecoder;
import net.scapeemulator.game.msg.impl.ClickMessage;
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 ClickMessageDecoder extends MessageDecoder<ClickMessage> {
public ClickMessageDecoder() {
super(75);
}
@Override
public ClickMessage decode(GameFrame frame) throws IOException {
GameFrameReader reader = new GameFrameReader(frame);
int flags = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
int pos = (int) reader.getUnsigned(DataType.INT, DataOrder.INVERSED_MIDDLE);
int time = flags & 0x7fff;
boolean rightClick = ((flags >> 15) & 0x1) != 0;
int x = pos & 0xffff;
int y = (pos >> 16) & 0xffff;
return new ClickMessage(time, x, y, rightClick);
}
}