From 7080bd0e0cb0fa421920ed57651ba99eb1a236e0 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Tue, 11 Aug 2026 11:24:16 -0400 Subject: [PATCH] bugfix(gui): Resolve the host's selected map through the map cache --- .../GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp | 15 ++++++++------- .../GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) 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 0520332611d..2a2e57d9584 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -780,15 +780,16 @@ void LanGameOptionsMenuInit( WindowLayout *layout, void *userData ) slot->setColor( pref.getPreferredColor() ); slot->setPlayerTemplate( pref.getPreferredFaction() ); slot->setNATBehavior(FirewallHelperClass::FIREWALL_TYPE_SIMPLE); - game->setMap( pref.getPreferredMap() ); - AsciiString lowerMap = pref.getPreferredMap(); - lowerMap.toLower(); - std::map::iterator it = TheMapCache->find(lowerMap); - if (it != TheMapCache->end()) + AsciiString mapName = pref.getPreferredMap(); + const MapMetaData *mapData = TheMapCache->findMap(mapName); + if (mapData != nullptr) + mapName = mapData->m_fileName; + game->setMap(mapName); + if (mapData != nullptr) { TheLAN->GetMyGame()->getSlot(0)->setMapAvailability(true); - TheLAN->GetMyGame()->setMapCRC( it->second.m_CRC ); - TheLAN->GetMyGame()->setMapSize( it->second.m_filesize ); + TheLAN->GetMyGame()->setMapCRC( mapData->m_CRC ); + TheLAN->GetMyGame()->setMapSize( mapData->m_filesize ); TheLAN->GetMyGame()->adjustSlotsForMap(); // BGC- adjust the slots for the selected map. } 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 609a0f772cd..5a2d7f52fcc 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/LanGameOptionsMenu.cpp @@ -856,17 +856,18 @@ void LanGameOptionsMenuInit( WindowLayout *layout, void *userData ) slot->setColor( pref.getPreferredColor() ); slot->setPlayerTemplate( pref.getPreferredFaction() ); slot->setNATBehavior(FirewallHelperClass::FIREWALL_TYPE_SIMPLE); - game->setMap( pref.getPreferredMap() ); + AsciiString mapName = pref.getPreferredMap(); + const MapMetaData *mapData = TheMapCache->findMap(mapName); + if (mapData != nullptr) + mapName = mapData->m_fileName; + game->setMap(mapName); game->setStartingCash( pref.getStartingCash() ); game->setSuperweaponRestriction( pref.getSuperweaponRestricted() ? 1 : 0 ); - AsciiString lowerMap = pref.getPreferredMap(); - lowerMap.toLower(); - std::map::iterator it = TheMapCache->find(lowerMap); - if (it != TheMapCache->end()) + if (mapData != nullptr) { TheLAN->GetMyGame()->getSlot(0)->setMapAvailability(true); - TheLAN->GetMyGame()->setMapCRC( it->second.m_CRC ); - TheLAN->GetMyGame()->setMapSize( it->second.m_filesize ); + TheLAN->GetMyGame()->setMapCRC( mapData->m_CRC ); + TheLAN->GetMyGame()->setMapSize( mapData->m_filesize ); TheLAN->GetMyGame()->adjustSlotsForMap(); // BGC- adjust the slots for the selected map. }