From 83de7c93a4cf328b0d9c3489a3639283e7220fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= <gustaf@hanicef.me> Date: Mon, 20 Jan 2025 16:52:58 +0100 Subject: [PATCH] Fix in-game masterserver listing --- src/m_menu.c | 12 ++++++------ src/netcode/d_clisrv.c | 4 ++-- src/netcode/http-mserv.c | 4 ++-- src/netcode/mserv.c | 7 ++++--- src/netcode/mserv.h | 5 ----- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index d92f56ffaf..9a6fbc8ae5 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -11373,7 +11373,7 @@ static void M_Refresh(INT32 choice) // note: this is the one case where 0 is a valid room number // because it corresponds to "All" - CL_UpdateServerList(!(ms_RoomId < 0), ms_RoomId); + CL_UpdateServerList(cv_masterserver_room_id.value >= 0, cv_masterserver_room_id.value); // first page of servers serverlistpage = 0; @@ -11459,7 +11459,7 @@ static void M_DrawConnectMenu(void) numPages = 1; // Room name - if (ms_RoomId < 0) + if (cv_masterserver_room_id.value < 0) V_DrawRightAlignedString(BASEVIDWIDTH - currentMenu->x, currentMenu->y + MP_ConnectMenu[mp_connect_room].alphaKey, V_YELLOWMAP, (itemOn == mp_connect_room) ? "<Select to change>" : "<Unlisted Mode>"); else @@ -11687,7 +11687,7 @@ static void M_ConnectMenu(INT32 choice) // first page of servers serverlistpage = 0; - if (ms_RoomId < 0) + if (cv_masterserver_room_id.value < 0) { M_RoomMenu(0); // Select a room instead of staring at an empty list // This prevents us from returning to the modified game alert. @@ -11783,7 +11783,7 @@ static void M_ChooseRoom(INT32 choice) #endif if (choice == 0) - CV_SetValue(&cv_masterserver_room_id, 0); + CV_SetValue(&cv_masterserver_room_id, -1); else { CV_SetValue(&cv_masterserver_room_id, roomIds[choice-1]); @@ -11855,7 +11855,7 @@ static void M_DrawServerMenu(void) if (currentMenu == &MP_ServerDef) { M_DrawLevelPlatterHeader(currentMenu->y - lsheadingheight/2, "Server settings", true, false); - if (ms_RoomId < 0) + if (cv_masterserver_room_id.value < 0) V_DrawRightAlignedString(BASEVIDWIDTH - currentMenu->x, currentMenu->y + MP_ServerMenu[mp_server_room].alphaKey, V_YELLOWMAP, (itemOn == mp_server_room) ? "<Select to change>" : "<Unlisted Mode>"); else @@ -11951,7 +11951,7 @@ static void M_ServerOptions(INT32 choice) static void M_StartServerMenu(INT32 choice) { (void)choice; - ms_RoomId = -1; + CV_SetValue(&cv_masterserver_room_id, -1); levellistmode = LLM_CREATESERVER; Newgametype_OnChange(); M_SetupNextMenu(&MP_ServerDef); diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c index 067458852e..6702e25912 100644 --- a/src/netcode/d_clisrv.c +++ b/src/netcode/d_clisrv.c @@ -663,7 +663,7 @@ void D_QuitNetGame(void) if (netnodes[i].ingame) HSendPacket(i, true, 0, 0); #ifdef MASTERSERVER - if (serverrunning && ms_RoomId > 0) + if (serverrunning && cv_masterserver_room_id.value > 0) UnregisterServer(); #endif } @@ -797,7 +797,7 @@ void SV_SpawnServer(void) { I_NetOpenSocket(); #ifdef MASTERSERVER - if (ms_RoomId > 0) + if (cv_masterserver_room_id.value > 0) RegisterServer(); #endif } diff --git a/src/netcode/http-mserv.c b/src/netcode/http-mserv.c index 4a08049845..8ce20af956 100644 --- a/src/netcode/http-mserv.c +++ b/src/netcode/http-mserv.c @@ -426,7 +426,7 @@ HMS_register (void) char *title; - hms = HMS_connect(PROTO_V4, "rooms/%d/register", ms_RoomId); + hms = HMS_connect(PROTO_V4, "rooms/%d/register", cv_masterserver_room_id.value); if (! hms) return 0; @@ -462,7 +462,7 @@ HMS_register (void) if (!hms_allow_ipv6) return ok; - hms = HMS_connect(PROTO_V6, "rooms/%d/register", ms_RoomId); + hms = HMS_connect(PROTO_V6, "rooms/%d/register", cv_masterserver_room_id.value); if (! hms) return 0; diff --git a/src/netcode/mserv.c b/src/netcode/mserv.c index fba36a3bab..f17db4b6e3 100644 --- a/src/netcode/mserv.c +++ b/src/netcode/mserv.c @@ -67,9 +67,10 @@ consvar_t cv_masterserver = CVAR_INIT ("masterserver", "https://ds.ms.srb2.org/M consvar_t cv_servername = CVAR_INIT_WITH_CALLBACKS ("servername", "SRB2 server", CV_SAVE|CV_NETVAR|CV_CALL|CV_NOINIT|CV_ALLOWLUA, NULL, Update_parameters, ServerName_CanChange); consvar_t cv_masterserver_update_rate = CVAR_INIT ("masterserver_update_rate", "15", CV_SAVE|CV_CALL|CV_NOINIT, masterserver_update_rate_cons_t, Update_parameters); -consvar_t cv_masterserver_room_id = CVAR_INIT ("masterserver_room_id", "0", CV_CALL, CV_Unsigned, RoomId_OnChange); +CV_PossibleValue_t cv_masterserver_room_values[] = {{-1, "MIN"}, {999999999, "MAX"}, {0, NULL}}; +consvar_t cv_masterserver_room_id = CVAR_INIT ("masterserver_room_id", "-1", CV_CALL, cv_masterserver_room_values, RoomId_OnChange); -INT16 ms_RoomId = 0; +static INT16 ms_RoomId = -1; #if defined (MASTERSERVER) && defined (HAVE_THREADS) int ms_QueryId; @@ -449,7 +450,7 @@ void UnregisterServer(void) static boolean Online (void) { - return ( serverrunning && ms_RoomId > 0 ); + return ( serverrunning && cv_masterserver_room_id.value > 0 ); } static inline void SendPingToMasterServer(void) diff --git a/src/netcode/mserv.h b/src/netcode/mserv.h index 419c11a894..ed3c9b27b8 100644 --- a/src/netcode/mserv.h +++ b/src/netcode/mserv.h @@ -71,11 +71,6 @@ extern consvar_t cv_masterserver_timeout; extern consvar_t cv_masterserver_debug; extern consvar_t cv_masterserver_token; -// < 0 to not connect (usually -1) (offline mode) -// == 0 to show all rooms, not a valid hosting room -// anything else is whatever room the MS assigns to that number (online mode) -extern INT16 ms_RoomId; - #ifdef HAVE_THREADS extern int ms_QueryId; extern I_mutex ms_QueryId_mutex; -- GitLab