public static GamePacket Create(PacketReader reader) { var id = (GamePacketID)reader.ReadByte(); var sender = reader.ReadNetID(); if (id == GamePacketID.ExtendedPacket) { id = (GamePacketID)reader.ReadUInt16(); } GamePacket packet; if (!Enum.IsDefined(typeof(GamePacketID), id) || id == GamePacketID.ExtendedPacket) { packet = UnknownGamePacket.CreateBody(reader, sender, id); } else { packet = _lookup[id](reader, sender); } packet.ExtraBytes = reader.ReadLeft(); return(packet); }
public static GamePacket ReadGamePacket(this PacketReader reader, ChannelID channelID, byte rawID, NetID sender) { var id = (GamePacketID)rawID; if (id == GamePacketID.ExtendedPacket) { id = (GamePacketID)reader.ReadUInt16(); } GamePacket packet; if (!Enum.IsDefined(typeof(GamePacketID), id) || id == GamePacketID.ExtendedPacket || id == GamePacketID.Batched) { packet = new UnknownGamePacket(reader, channelID, sender, id); } else { packet = _lookup[id](reader, channelID, sender); } packet.ExtraBytes = reader.ReadLeft(); return(packet); }