示例#1
0
 public void Update(GameTime gameTime)
 {
     if (RemainingCountdownTime > TimeSpan.Zero)
     {
         RemainingCountdownTime -= gameTime.ElapsedGameTime;
     }
     ProcessMessages();
     _interpolator.Apply(gameTime);
     TickCountdown(gameTime);
     GameInstance.Tick(gameTime);
     if (MessageProcessor.MessageQueue.Count > 0 &&
         NetworkClient.ConnectionStatus == Lidgren.Network.NetConnectionStatus.Connected)
     {
         var msg = NetworkClient.CreateMessage();
         MessageProcessor.WriteMessages(msg);
         NetworkClient.SendMessage(msg, Lidgren.Network.NetDeliveryMethod.ReliableOrdered);
     }
     MessageProcessor.ClearQueue();
     NetworkClient.FlushSendQueue();
 }
示例#2
0
        public void Update(GameTime gameTime)
        {
            GameInstance.Tick(gameTime);
            TickGameStartCountdown(gameTime);

            Timers.Update(gameTime);
            ProcessMessages();
            //Send all the wideband messages (if someone is listening)
            if (Connections.ActiveConnections.Count > 0)
            {
                if (MessageProcessor.MessageQueue.Count > 0)
                {
                    var msg = NetworkServer.CreateMessage();
                    MessageProcessor.WriteMessages(msg);
                    NetworkServer.SendMessage(msg, Connections.ActiveConnections,
                                              Lidgren.Network.NetDeliveryMethod.ReliableOrdered,
                                              Channels.GameplayData);
                }

                //As well as narrowband ones
                foreach (var plr in Players)
                {
                    if (MessageProcessor.HasPrivateMessages(plr) && plr.Connection != null && plr.Connection.Status == Lidgren.Network.NetConnectionStatus.Connected)
                    {
                        var msg = NetworkServer.CreateMessage();
                        MessageProcessor.WritePrivateMessages(plr, msg);
                        plr.Connection.SendMessage(msg,
                                                   Lidgren.Network.NetDeliveryMethod.ReliableOrdered,
                                                   Channels.GameplayData);
                    }
                }
            }
            //Just clear the queue since no one is listening
            MessageProcessor.ClearQueue();
            MessageProcessor.ClearPrivateQueues();

            FlushMessages();
        }