Move exit code constants to networktransport.h and eliminate magic numbers

Move EXIT_ROOM_FULL/EXIT_CONNECTION_LOST from NetworkManager (where they
were unused) to the Multiplayer namespace in networktransport.h so both
backends can reference them. Pass them into the emscripten inline JS as
parameters instead of hardcoding 10/11.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christian Semmler 2026-03-14 09:23:45 -07:00
parent 37587beda4
commit 855c5c4210
No known key found for this signature in database
GPG Key ID: 086DAA1360BEEE5C
3 changed files with 7 additions and 6 deletions

View File

@ -150,8 +150,6 @@ class NetworkManager : public MxCore {
static const uint32_t BROADCAST_INTERVAL_MS = 66; // ~15Hz static const uint32_t BROADCAST_INTERVAL_MS = 66; // ~15Hz
static const uint32_t TIMEOUT_MS = 5000; // 5 second timeout static const uint32_t TIMEOUT_MS = 5000; // 5 second timeout
static const int EXIT_ROOM_FULL = 10;
static const int EXIT_CONNECTION_LOST = 11;
}; };
} // namespace Multiplayer } // namespace Multiplayer

View File

@ -7,6 +7,9 @@
namespace Multiplayer namespace Multiplayer
{ {
static const int EXIT_ROOM_FULL = 10;
static const int EXIT_CONNECTION_LOST = 11;
class NetworkTransport { class NetworkTransport {
public: public:
virtual ~NetworkTransport() = default; virtual ~NetworkTransport() = default;

View File

@ -44,6 +44,8 @@ void WebSocketTransport::Connect(const char* p_roomId)
var connPtr = $1; var connPtr = $1;
var discPtr = $2; var discPtr = $2;
var everConnPtr = $3; var everConnPtr = $3;
var exitRoomFull = $4;
var exitConnLost = $5;
var socketId = Module._mpNextSocketId++; var socketId = Module._mpNextSocketId++;
Module._mpMessageQueues[socketId] = []; Module._mpMessageQueues[socketId] = [];
@ -67,9 +69,7 @@ void WebSocketTransport::Connect(const char* p_roomId)
var wasEverConnected = Atomics.load(HEAP32, everConnPtr >> 2); var wasEverConnected = Atomics.load(HEAP32, everConnPtr >> 2);
Atomics.store(HEAP32, connPtr >> 2, 0); Atomics.store(HEAP32, connPtr >> 2, 0);
Atomics.store(HEAP32, discPtr >> 2, 1); Atomics.store(HEAP32, discPtr >> 2, 1);
// 10 = room full / server rejected before connecting Module._exitCode = wasEverConnected ? exitConnLost : exitRoomFull;
// 11 = connection lost after successful connect
Module._exitCode = wasEverConnected ? 11 : 10;
}; };
ws.onerror = function() { ws.onerror = function() {
@ -83,7 +83,7 @@ void WebSocketTransport::Connect(const char* p_roomId)
} }
return socketId; return socketId;
}, url.c_str(), &m_connectedFlag, &m_disconnectedFlag, &m_wasEverConnected); }, url.c_str(), &m_connectedFlag, &m_disconnectedFlag, &m_wasEverConnected, EXIT_ROOM_FULL, EXIT_CONNECTION_LOST);
// clang-format on // clang-format on
if (m_socketId <= 0) { if (m_socketId <= 0) {