Beispiel #1
0
        // Sends the server our current paddle's Y Position (if it's changed)
        private void _sendPaddlePosition(TimeSpan resendTimeout)
        {
            // Don't send anything if there hasn't been an update
            if (_previousY == _ourPaddle.Position.Y)
            {
                return;
            }

            // Make sure not to spam them
            if (DateTime.Now >= (_lastPacketSentTime.Add(resendTimeout)))
            {
                PaddlePositionPacket ppp = new PaddlePositionPacket();
                ppp.Y = _ourPaddle.Position.Y;

                _sendPacket(ppp);
            }
        }
Beispiel #2
0
        // This updates a paddle's postion from a client
        // `message.Packet.Type` must be `PacketType.PaddlePosition`
        // TODO add some "cheat detection,"
        private void _handlePaddleUpdate(NetworkMessage message)
        {
            // Only two possible players
            PlayerInfo player = message.Sender.Equals(LeftPlayer.Endpoint) ? LeftPlayer : RightPlayer;

            // Make sure we use the latest message **SENT BY THE CLIENT**  ignore it otherwise
            if (message.Packet.Timestamp > player.LastPacketReceivedTimestamp)
            {
                // record timestamp and time
                player.LastPacketReceivedTimestamp = message.Packet.Timestamp;
                player.LastPacketReceivedTime      = message.ReceiveTime;

                // "cast" the packet and set data
                PaddlePositionPacket ppp = new PaddlePositionPacket(message.Packet.GetBytes());
                player.Paddle.Position.Y = ppp.Y;
            }
        }