From 4d3ade251eebf6aac93542bef016f165b2a25cda Mon Sep 17 00:00:00 2001 From: MrS-ibra Date: Sun, 22 Mar 2026 19:23:31 +0300 Subject: [PATCH] Fix garbled map names in lobby list --- .../Source/GameNetwork/GameSpy/LobbyUtils.cpp | 16 ++++++---------- .../GUI/GUICallbacks/Menus/PopupHostGame.cpp | 2 +- .../OnlineServices_LobbyInterface.cpp | 7 +++---- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/Core/GameEngine/Source/GameNetwork/GameSpy/LobbyUtils.cpp b/Core/GameEngine/Source/GameNetwork/GameSpy/LobbyUtils.cpp index 232194b2a36..8206f86c412 100644 --- a/Core/GameEngine/Source/GameNetwork/GameSpy/LobbyUtils.cpp +++ b/Core/GameEngine/Source/GameNetwork/GameSpy/LobbyUtils.cpp @@ -880,16 +880,12 @@ static Int insertGame(GameWindow* win, LobbyEntry& lobbyInfo, Bool showMap) } else { - const char* start = lobbyMapName.reverseFind('\\'); - if (start) - { - ++start; - } - else - { - start = lobbyMapName.str(); - } - mapName.translate(start); + const char* start = lobbyInfo.map_name.c_str(); + const char* slashPos = strrchr(start, '\\'); + if (slashPos) + start = slashPos + 1; + + mapName.format(L"%s", from_utf8(start).c_str()); } GadgetListBoxAddEntryText(win, mapName, gameColor, index, COLUMN_MAP); diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupHostGame.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupHostGame.cpp index 57cc9045cbd..f2c378e4339 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupHostGame.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/PopupHostGame.cpp @@ -1,4 +1,4 @@ -/* +/* ** Command & Conquer Generals Zero Hour(tm) ** Copyright 2025 Electronic Arts Inc. ** diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp index f5d20f6d768..63cfde7fdba 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp @@ -1262,8 +1262,7 @@ void NGMP_OnlineServices_LobbyInterface::CreateLobby(UnicodeString strLobbyName, std::map mapHeaders; // convert - AsciiString strMapName = AsciiString(); - strMapName.translate(strInitialMapName); + std::string strMapName = to_utf8(strInitialMapName.str()); // sanitize map path // we need to parse out the map name for custom maps... its an absolute path @@ -1276,7 +1275,7 @@ void NGMP_OnlineServices_LobbyInterface::CreateLobby(UnicodeString strLobbyName, nlohmann::json j; j["name"] = to_utf8(strLobbyName.str()); - j["map_name"] = strMapName.str(); + j["map_name"] = strMapName; j["map_path"] = sanitizedMapPath.str(); j["map_official"] = bIsOfficial; j["max_players"] = initialMaxSize; @@ -1342,7 +1341,7 @@ void NGMP_OnlineServices_LobbyInterface::CreateLobby(UnicodeString strLobbyName, AsciiString strName = AsciiString(); m_CurrentLobby.name = to_utf8(strLobbyName.str()); - m_CurrentLobby.map_name = std::string(strMapName.str()); + m_CurrentLobby.map_name = std::string(strMapName); m_CurrentLobby.map_path = std::string(sanitizedMapPath.str()); m_CurrentLobby.current_players = 1; m_CurrentLobby.max_players = initialMaxSize;