示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
                }
            }
        }