From 455bccb2fc2e5778be9ba29be41fd54d7cf72595 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 23 Feb 2023 00:50:47 -0300 Subject: [PATCH] FIX: Guests now receive the first packet from server --- lib/LinkWireless.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/LinkWireless.h b/lib/LinkWireless.h index 0864849..c5776e3 100644 --- a/lib/LinkWireless.h +++ b/lib/LinkWireless.h @@ -635,7 +635,7 @@ class LinkWireless { u8 playerCount = 1; u8 currentPlayerId = 0; - bool didReceiveFirstPacketIdFromServer = false; + bool didReceiveLastPacketIdFromServer = false; u32 lastPacketId = 0; u32 lastPacketIdFromServer = 0; u32 lastConfirmationFromServer = 0; @@ -889,16 +889,13 @@ class LinkWireless { LINK_WIRELESS_MAX_PACKET_IDS; if (config.retransmission && !isConfirmation && - sessionState.didReceiveFirstPacketIdFromServer && message._packetId != expectedPacketId) return false; sessionState.playerCount = remotePlayerCount; - if (!isConfirmation) { - sessionState.didReceiveFirstPacketIdFromServer = true; + if (!isConfirmation) message._packetId = ++sessionState.lastPacketIdFromServer; - } } bool isMessageFromCurrentPlayer = @@ -956,12 +953,14 @@ class LinkWireless { if (state == CONNECTED) { if (confirmation.playerId == 0 && - sessionState.lastPacketIdFromServer == 0) + !sessionState.didReceiveLastPacketIdFromServer) { sessionState.lastPacketIdFromServer = confirmationData; - else if (confirmation.playerId == sessionState.currentPlayerId) + sessionState.didReceiveLastPacketIdFromServer = true; + } else if (confirmation.playerId == sessionState.currentPlayerId) { handleServerConfirmation(confirmationData); - else + } else { return false; + } } else { handleClientConfirmation(confirmationData, confirmation.playerId); } @@ -1130,7 +1129,7 @@ class LinkWireless { this->sessionState.sendReceiveLatch = false; this->sessionState.pingSent = false; this->sessionState.shouldWaitForServer = false; - this->sessionState.didReceiveFirstPacketIdFromServer = false; + this->sessionState.didReceiveLastPacketIdFromServer = false; this->sessionState.lastPacketId = 0; this->sessionState.lastPacketIdFromServer = 0; this->sessionState.lastConfirmationFromServer = 0;