Esempio n. 1
0
        public static void HandlePackets(BinaryReader reader, int sender)
        {
            byte ID = reader.ReadByte();

            try
            {
                if (ID >= Packets.Count)
                {
                    return;
                }

                MPPacket packet = Packets[ID];

                packet.Receive(reader, sender);
            }
            catch (Exception e)
            {
                Mod.Logger.Warn($"Exception handling packet #{ID}: {e}");
            }
        }
Esempio n. 2
0
        private static void RegisterPackets()
        {
            Type mpPacketType = typeof(MPPacket);
            IEnumerable <Type> mpPacketTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => !t.IsAbstract && t.IsSubclassOf(mpPacketType));

            foreach (var type in mpPacketTypes)
            {
                MPPacket packet = (MPPacket)Activator.CreateInstance(type);

                int count = Packets.Count;

                Packets.Add(packet);
                if (count > byte.MaxValue)
                {
                    throw new Exception($"Packet limit of {byte.MaxValue} reached!");
                }

                byte id = (byte)count;
                ID[type] = id;
            }
        }