Пример #1
0
        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);
        }
Пример #2
0
        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);
        }