// 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); } } }
// 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); }
// 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); }