/// <summary> /// Send all of the player info to the clients. /// </summary> /// <param name="inc"></param> public static void SendFullPlayerList(NetIncomingMessage inc) { Console.WriteLine("Sending out full server to all!."); var msg = server.CreateMessage(); PacketTypes.writeToMessage(msg, PacketType.RecieveAllPlayers); msg.Write((bool)true); msg.Write(players.Count); foreach (var player in players) { player.writeToMessage(msg); } server.SendMessage(msg, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0); //server.SendToAll(msg, NetDeliveryMethod.ReliableOrdered); }
/// <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); } } }