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); } } }