1package com.osroyale.net.codec.game;
3import com.osroyale.net.packet.GamePacket;
4import com.osroyale.net.packet.PacketType;
5import com.osroyale.net.codec.IsaacCipher;
6import io.netty.buffer.ByteBuf;
7import io.netty.channel.ChannelHandlerContext;
8import io.netty.handler.codec.MessageToByteEncoder;
10public class GamePacketEncoder
extends MessageToByteEncoder<GamePacket> {
12 private final IsaacCipher encryptor;
14 public GamePacketEncoder(IsaacCipher encryptor) {
15 this.encryptor = encryptor;
19 protected void encode(ChannelHandlerContext ctx, GamePacket packet, ByteBuf out)
throws Exception {
20 out.writeByte((packet.getOpcode() + (encryptor.getKey() & 0xFF)) & 0xFF);
21 if (packet.getHeader() == PacketType.VAR_BYTE) {
22 out.writeByte(packet.getSize());
23 }
else if (packet.getHeader() == PacketType.VAR_SHORT) {
24 out.writeShort(packet.getSize());
26 out.writeBytes(packet.getPayload());