blob: 94e6da27b9ddf4a94c9154dd9c01f40d373b3273 [file] [log] [blame] [raw]
package net.lightstone.net.codec;
import java.io.IOException;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import net.lightstone.msg.SetWindowSlotMessage;
public final class SetWindowSlotCodec extends MessageCodec<SetWindowSlotMessage> {
public SetWindowSlotCodec() {
super(SetWindowSlotMessage.class, 0x67);
}
@Override
public SetWindowSlotMessage decode(ChannelBuffer buffer) throws IOException {
int id = buffer.readUnsignedByte();
int slot = buffer.readUnsignedShort();
int item = buffer.readUnsignedShort();
if (item == 0xFFFF) {
return new SetWindowSlotMessage(id, slot);
} else {
int count = buffer.readUnsignedByte();
int damage = buffer.readUnsignedByte();
return new SetWindowSlotMessage(id, slot, item, count, damage);
}
}
@Override
public ChannelBuffer encode(SetWindowSlotMessage message) throws IOException {
int item = message.getId();
ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
buffer.writeByte(message.getId());
buffer.writeShort(message.getSlot());
buffer.writeShort(message.getItem());
if (item != -1) {
buffer.writeByte(message.getCount());
buffer.writeByte(message.getDamage());
}
return buffer;
}
}