public void Update(GameTime gameTime)
 {
     if(serverInitialized && FrameNumber >= 0)
     {
         for (int i = 0; i < ClientInputBuffer.Count; i++)
         {
             if(ClientInputBuffer[i].FrameNumber <= FrameNumber)
             {
                 var item = ClientInputBuffer[i];
                 UpdateFromClientGamepad(item);
                 ClientInputBuffer.RemoveAt(i);
                 i--;
             }
         }
     }
     foreach(Smacker s in smackerList)
     {
         for(int i = 0; i < playerInputs.Count; i++)
         {
             if (s.smackerID == playerInputs[i].Item1)
             {
                 HandleStateFromInput(s, playerInputs[i].Item2);
                 playerInputs.RemoveAt(i);
             }
         }
     }
 }
        private void Update(GameTime gameTime)
        {
            pauseAlpha += gameTime.ElapsedGameTime.TotalMilliseconds;
            lock (packetProcessQueueLock)
                while (packetProcessQueue.Any())
                {
                    var packet = packetProcessQueue.Dequeue();
                    if (packet.GetPacketID() == 1)
                    {
                        var packet2 = (QueueInteractionPacket)packet;

                    }
                    if (packet.GetPacketID() == 2)
                    {
                        var packet2 = (QueueStatusUpdatePacket)packet;
                        Console.WriteLine(packet2.Accepted);
                        if (!packet2.Accepted)
                        {
                            /*IsServer = null;
                            selectedUnits.Clear();
                            ServerIP = null;
                            ReceivingThread.Abort();
                            ReceivingThread = null;
                            ReceiveStatesThread.Abort();
                            ReceiveStatesThread = null;
                            curPlayer.playerID = false;
                            Interaction.MsgBox(
                                "Server declined your request to connect. You may try connecting to another host.");*/
                        }
                    }
                    if (packet.GetPacketID() == 3)
                    {
                        var packet2 = (QueueFinishedPacket)packet;
                        new Task(() =>
                        {

                            //var response = Interaction.MsgBox("Would you like to allow " + packet2.nameToConnect + " to connect?", MsgBoxStyle.YesNo);
                            if (acceptingNewClients)
                            {
                                ClientIP = packet2.ipAddressToConnectTo;
                                PacketQueue.Instance.AddPacket(new ConnectDecisionPacket { Accepted = true });
                                SendStatePacket(true);
                            }
                            else
                            {
                                ClientIP = packet2.ipAddressToConnectTo;
                                PacketQueue.Instance.AddPacket(new ConnectDecisionPacket { Accepted = false });
                            }
                        }).Start();
                    }
                    /*if (packet.GetPacketID() == 7)
                    {
                        var packet2 = (GameStatePacket)packet;
                        UpdateToState(packet2);
                        FrameNumber = 0;
                    }*/
                    if (packet.GetPacketID() == 8)
                    {
                        var packet2 = (InputPacket)packet;
                        if (!FrameNumber.HasValue)
                            //x frame delay before starting inputs. This allows the other players inputs to be here before we start processing.
                            FrameNumber = 0;
                        ClientInputBuffer.Add(packet2);
                    }
                }
        }