Пример #1
0
        // When server receives data open the appropriate method and then resend the packet to all existing clients.
        protected virtual void OnDataReceived(NetIncomingMessage msg)
        {
            string             packet_name       = msg.ReadString();
            string             packet_identifier = msg.ReadString();
            NetOutgoingMessage outMsg            = server.CreateMessage();

            Console.WriteLine("Message Received In Server: " + packet_name + " packet");

            if (Packet_Register.Instance.packetTypes.ContainsKey(packet_name))
            {
                Object instance = Activator.CreateInstance(Packet_Register.Instance.packetTypes[packet_name], packet_identifier);

                MethodInfo openMethod   = Packet_Register.Instance.packetTypes[packet_name].GetMethod("OpenPacketFromMessage");
                object     packet       = openMethod.Invoke(instance, new object[] { msg });
                bool       shouldResend = false;

                //If it needs to be adjusted then adjust the packet
                if (Packet_Register.Instance.serverPacketReceivedRegister.ContainsKey(packet_identifier))
                {
                    shouldResend = Packet_Register.Instance.serverPacketReceivedRegister[packet_identifier].Invoke(new object[] { packet, msg.SenderConnection });
                }

                MethodInfo packMethod = Packet_Register.Instance.packetTypes[packet_name].GetMethod("PackPacketIntoMessage");

                outMsg = PacketHelper.AddDefaultInformationToPacket(outMsg, packet_name, packet_identifier);
                outMsg = packMethod.Invoke(instance, new object[] { outMsg, packet }) as NetOutgoingMessage;

                if (shouldResend)
                {
                    server.SendToAll(outMsg, NetDeliveryMethod.ReliableOrdered);
                }
            }
        }
Пример #2
0
        // Adds the default information to a packet and sends it to the server.
        public virtual void SendPacketToServer <T>(T packet) where T : Packet <T>
        {
            NetOutgoingMessage msg = client.CreateMessage();

            msg = PacketHelper.AddDefaultInformationToPacket(msg, typeof(T).Name, packet.Get_PacketIdentifier());
            msg = packet.PackPacketIntoMessage(msg, packet);
            client.SendMessage(msg, NetDeliveryMethod.ReliableOrdered);
        }
Пример #3
0
        // Adds the default information to a packet and sends it to a specific client.
        public void SendPacketToExistingConnection <T>(T packet, NetConnection conn) where T : Packet <T>
        {
            NetOutgoingMessage msg = server.CreateMessage();

            msg = PacketHelper.AddDefaultInformationToPacket(msg, typeof(T).Name, packet.Get_PacketIdentifier());
            msg = packet.PackPacketIntoMessage(msg, packet);
            server.SendMessage(msg, conn, NetDeliveryMethod.ReliableOrdered);
        }