From 18bd5ee3e6ecb069b1309102728adc3cfa6ec5a3 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:00:17 +0200 Subject: [PATCH 1/2] refactor(lan): Simplify LAN player tooltip related code (#1693) --- .../Include/GameNetwork/LANAPICallbacks.h | 2 +- .../GUICallbacks/Menus/LanGameOptionsMenu.cpp | 24 ++++++++++++------- .../GUI/GUICallbacks/Menus/LanLobbyMenu.cpp | 10 ++------ .../GameEngine/Source/GameNetwork/LANAPI.cpp | 22 ++++++++++------- .../Include/GameNetwork/LANAPICallbacks.h | 2 +- .../GUICallbacks/Menus/LanGameOptionsMenu.cpp | 24 ++++++++++++------- .../GUI/GUICallbacks/Menus/LanLobbyMenu.cpp | 10 ++------ .../GameEngine/Source/GameNetwork/LANAPI.cpp | 22 ++++++++++------- 8 files changed, 66 insertions(+), 50 deletions(-) diff --git a/Generals/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h b/Generals/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h index 315ee7b227..15e492f3bb 100644 --- a/Generals/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h +++ b/Generals/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h @@ -74,7 +74,7 @@ extern const Color acceptFalseColor; void lanUpdateSlotList( void ); void updateGameOptions( void ); - +void setLANPlayerTooltip(LANPlayer* player); //Enum is used for the utility function so other windows do not need //to know about controls on LanGameOptions window. diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp index 46ccea0032..f5bdf172df 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -214,15 +214,8 @@ static void playerTooltip(GameWindow *window, TheMouse->setCursorTooltip( UnicodeString::TheEmptyString ); return; } - UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); -#if defined(RTS_DEBUG) - UnicodeString ip; - ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); - tooltip.concat(ip); -#endif - TheMouse->setCursorTooltip( tooltip ); + setLANPlayerTooltip(player); } void StartPressed(void) @@ -903,6 +896,21 @@ void updateGameOptions( void ) } +//------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------- +void setLANPlayerTooltip(LANPlayer* player) +{ + UnicodeString tooltip; + tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); +#if defined(RTS_DEBUG) + UnicodeString ip; + ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); + tooltip.concat(ip); +#endif + TheMouse->setCursorTooltip( tooltip ); + +} + //------------------------------------------------------------------------------------------------- /** This is called when a shutdown is complete for this menu */ diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp index 28489122cf..5015309083 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp @@ -310,14 +310,8 @@ static void playerTooltip(GameWindow *window, //TheMouse->setCursorTooltip( TheGameText->fetch("TOOLTIP:LobbyPlayers") ); return; } - UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); -#if defined(RTS_DEBUG) - UnicodeString ip; - ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); - tooltip.concat(ip); -#endif - TheMouse->setCursorTooltip( tooltip ); + + setLANPlayerTooltip(player); } diff --git a/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp b/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp index 89a53cd1b6..dea225b29b 100644 --- a/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp +++ b/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp @@ -112,21 +112,27 @@ void LANAPI::init( void ) m_lastGameopt = ""; - unsigned long bufSize = UNLEN + 1; char userName[UNLEN + 1]; - if (!GetUserName(userName, &bufSize)) + DWORD bufSize = ARRAY_SIZE(userName); + if (GetUserNameA(userName, &bufSize)) { - strcpy(userName, "unknown"); + m_userName.set(userName, bufSize); + } + else + { + m_userName = "unknown"; } - m_userName = userName; - bufSize = MAX_COMPUTERNAME_LENGTH + 1; char computerName[MAX_COMPUTERNAME_LENGTH + 1]; - if (!GetComputerName(computerName, &bufSize)) + bufSize = ARRAY_SIZE(computerName); + if (GetComputerNameA(computerName, &bufSize)) + { + m_hostName.set(computerName, bufSize); + } + else { - strcpy(computerName, "unknown"); + m_hostName = "unknown"; } - m_hostName = computerName; } void LANAPI::reset( void ) diff --git a/GeneralsMD/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h b/GeneralsMD/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h index ef31229a2d..8f4a726ce3 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h +++ b/GeneralsMD/Code/GameEngine/Include/GameNetwork/LANAPICallbacks.h @@ -74,7 +74,7 @@ extern const Color acceptFalseColor; void lanUpdateSlotList( void ); void updateGameOptions( void ); - +void setLANPlayerTooltip(LANPlayer* player); //Enum is used for the utility function so other windows do not need //to know about controls on LanGameOptions window. diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp index d686c7130e..8e9f9e6f78 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -221,15 +221,8 @@ static void playerTooltip(GameWindow *window, TheMouse->setCursorTooltip( UnicodeString::TheEmptyString ); return; } - UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); -#if defined(RTS_DEBUG) - UnicodeString ip; - ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); - tooltip.concat(ip); -#endif - TheMouse->setCursorTooltip( tooltip ); + setLANPlayerTooltip(player); } void StartPressed(void) @@ -998,6 +991,21 @@ void updateGameOptions( void ) } +//------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------- +void setLANPlayerTooltip(LANPlayer* player) +{ + UnicodeString tooltip; + tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); +#if defined(RTS_DEBUG) + UnicodeString ip; + ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); + tooltip.concat(ip); +#endif + TheMouse->setCursorTooltip( tooltip ); + +} + //------------------------------------------------------------------------------------------------- /** This is called when a shutdown is complete for this menu */ diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp index 59a4d7a786..1f1a8e2b05 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanLobbyMenu.cpp @@ -352,14 +352,8 @@ static void playerTooltip(GameWindow *window, //TheMouse->setCursorTooltip( TheGameText->fetch("TOOLTIP:LobbyPlayers") ); return; } - UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); -#if defined(RTS_DEBUG) - UnicodeString ip; - ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); - tooltip.concat(ip); -#endif - TheMouse->setCursorTooltip( tooltip ); + + setLANPlayerTooltip(player); } diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp index e10a45aa26..cc7be67665 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp @@ -112,21 +112,27 @@ void LANAPI::init( void ) m_lastGameopt = ""; - unsigned long bufSize = UNLEN + 1; char userName[UNLEN + 1]; - if (!GetUserName(userName, &bufSize)) + DWORD bufSize = ARRAY_SIZE(userName); + if (GetUserNameA(userName, &bufSize)) { - strcpy(userName, "unknown"); + m_userName.set(userName, bufSize); + } + else + { + m_userName = "unknown"; } - m_userName = userName; - bufSize = MAX_COMPUTERNAME_LENGTH + 1; char computerName[MAX_COMPUTERNAME_LENGTH + 1]; - if (!GetComputerName(computerName, &bufSize)) + bufSize = ARRAY_SIZE(computerName); + if (GetComputerNameA(computerName, &bufSize)) + { + m_hostName.set(computerName, bufSize); + } + else { - strcpy(computerName, "unknown"); + m_hostName = "unknown"; } - m_hostName = computerName; } void LANAPI::reset( void ) From 31223568f2a4d3040282aec2d30acf76cb2760f2 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Mon, 13 Oct 2025 22:11:48 +0200 Subject: [PATCH 2/2] tweak(lan): Hide computer identity in LAN lobby (#1693) --- Core/GameEngine/Include/Common/GameDefines.h | 8 ++++++++ .../GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp | 12 ++++++++++-- .../Code/GameEngine/Source/GameNetwork/LANAPI.cpp | 4 ++++ .../GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp | 12 ++++++++++-- .../Code/GameEngine/Source/GameNetwork/LANAPI.cpp | 4 ++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/Core/GameEngine/Include/Common/GameDefines.h b/Core/GameEngine/Include/Common/GameDefines.h index 02229cfc8e..189e5b07a3 100644 --- a/Core/GameEngine/Include/Common/GameDefines.h +++ b/Core/GameEngine/Include/Common/GameDefines.h @@ -86,6 +86,14 @@ #define ENABLE_GUI_HACKS (1) #endif +// Tell our computer identity in the LAN lobby. Disable for privacy. +// Was enabled in the retail game and exposed the computer login and host names. +#ifdef RTS_DEBUG +#ifndef TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY +#define TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY (1) +#endif +#endif + #define MIN_DISPLAY_BIT_DEPTH 16 #define DEFAULT_DISPLAY_BIT_DEPTH 32 #define DEFAULT_DISPLAY_WIDTH 800 // The standard resolution this game was designed for diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp index f5bdf172df..b72c833429 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -901,14 +901,22 @@ void updateGameOptions( void ) void setLANPlayerTooltip(LANPlayer* player) { UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); + + if (!player->getLogin().isEmpty() || !player->getHost().isEmpty()) + { + tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); + } + #if defined(RTS_DEBUG) UnicodeString ip; ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); tooltip.concat(ip); #endif - TheMouse->setCursorTooltip( tooltip ); + if (!tooltip.isEmpty()) + { + TheMouse->setCursorTooltip( tooltip ); + } } diff --git a/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp b/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp index dea225b29b..5feff8444e 100644 --- a/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp +++ b/Generals/Code/GameEngine/Source/GameNetwork/LANAPI.cpp @@ -112,6 +112,7 @@ void LANAPI::init( void ) m_lastGameopt = ""; +#if TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY char userName[UNLEN + 1]; DWORD bufSize = ARRAY_SIZE(userName); if (GetUserNameA(userName, &bufSize)) @@ -133,6 +134,7 @@ void LANAPI::init( void ) { m_hostName = "unknown"; } +#endif } void LANAPI::reset( void ) @@ -451,11 +453,13 @@ void LANAPI::update( void ) } else { +#if TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY AsciiString text; text.format("User=%s", m_userName.str()); RequestGameOptions( text, true ); text.format("Host=%s", m_hostName.str()); RequestGameOptions( text, true ); +#endif RequestGameOptions( "HELLO", false ); } } diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp index 8e9f9e6f78..8e34a81e01 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -996,14 +996,22 @@ void updateGameOptions( void ) void setLANPlayerTooltip(LANPlayer* player) { UnicodeString tooltip; - tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); + + if (!player->getLogin().isEmpty() || !player->getHost().isEmpty()) + { + tooltip.format(TheGameText->fetch("TOOLTIP:LANPlayer"), player->getLogin().str(), player->getHost().str()); + } + #if defined(RTS_DEBUG) UnicodeString ip; ip.format(L" - %d.%d.%d.%d", PRINTF_IP_AS_4_INTS(player->getIP())); tooltip.concat(ip); #endif - TheMouse->setCursorTooltip( tooltip ); + if (!tooltip.isEmpty()) + { + TheMouse->setCursorTooltip( tooltip ); + } } diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp index cc7be67665..87027fe46d 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/LANAPI.cpp @@ -112,6 +112,7 @@ void LANAPI::init( void ) m_lastGameopt = ""; +#if TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY char userName[UNLEN + 1]; DWORD bufSize = ARRAY_SIZE(userName); if (GetUserNameA(userName, &bufSize)) @@ -133,6 +134,7 @@ void LANAPI::init( void ) { m_hostName = "unknown"; } +#endif } void LANAPI::reset( void ) @@ -451,11 +453,13 @@ void LANAPI::update( void ) } else { +#if TELL_COMPUTER_IDENTITY_IN_LAN_LOBBY AsciiString text; text.format("User=%s", m_userName.str()); RequestGameOptions( text, true ); text.format("Host=%s", m_hostName.str()); RequestGameOptions( text, true ); +#endif RequestGameOptions( "HELLO", false ); } }