/// <summary> /// Updates the connection every tick. /// </summary> public void Update() { //If I don't have a list of all of the players, send it to the client when they connect. if (initializedPlayers == false) { var msg = client.CreateMessage(); PacketTypes.writeToMessage(msg, PacketType.RequestAllPlayers); client.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, 0); } NetIncomingMessage inc; while ((inc = client.ReadMessage()) != null) { var packetType = PacketTypes.readPacketType(inc); switch (packetType) { case PacketType.Login: break; case PacketType.NewPlayer: Player oPlayer = Player.createFromIncomingNetMessageVerbose(inc); otherPlayers.Add(oPlayer); break; case PacketType.AllPlayers: ReceiveAllPlayers(inc); break; case PacketType.RecieveAllPlayers: //Code that executes when the client requests all of the players from the server. initializedPlayers = inc.ReadBoolean(); ReceiveAllPlayers(inc); break; default: break; //throw new Exception("Argument out of range: Not enough variety in packet types: Failed packet type is:" + packetType); } } }
/// <summary> /// Run the server. /// </summary> public void Run() { Console.WriteLine("Starting server..."); while (true) { NetIncomingMessage inc; if ((inc = server.ReadMessage()) == null) { continue; } switch (inc.MessageType) { case NetIncomingMessageType.Error: break; case NetIncomingMessageType.StatusChanged: break; case NetIncomingMessageType.UnconnectedData: break; case NetIncomingMessageType.ConnectionApproval: ConnectionApproval(inc); break; case NetIncomingMessageType.Data: var packet = PacketTypes.readPacketType(inc); if (packet == PacketType.RequestAllPlayers) { Console.WriteLine("SEND THE DATA!!!"); SendFullPlayerList(inc); } break; case NetIncomingMessageType.Receipt: break; case NetIncomingMessageType.DiscoveryRequest: break; case NetIncomingMessageType.DiscoveryResponse: break; case NetIncomingMessageType.VerboseDebugMessage: break; case NetIncomingMessageType.DebugMessage: break; case NetIncomingMessageType.WarningMessage: var str = inc.ReadString(); Console.Write("WARNING" + str); break; case NetIncomingMessageType.ErrorMessage: break; case NetIncomingMessageType.NatIntroductionSuccess: break; case NetIncomingMessageType.ConnectionLatencyUpdated: break; } var ok = server.Connections; foreach (var v in ok) { Console.WriteLine(v); } } }