From 0fcc2ff11ec3e310dd1dcf01970596b7835eccde Mon Sep 17 00:00:00 2001 From: MrS-ibra Date: Tue, 30 Dec 2025 01:45:29 +0300 Subject: [PATCH 1/4] Fix countdown reset on changes + back and start game button re-enable after stopping countdown --- .../OnlineServices_LobbyInterface.h | 8 ++ .../GUICallbacks/Menus/WOLGameSetupMenu.cpp | 76 ++++++++++--------- .../GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp | 5 +- .../OnlineServices_LobbyInterface.cpp | 10 +++ 4 files changed, 64 insertions(+), 35 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h b/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h index 1e525e58e1f..92c6239ea9d 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h +++ b/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h @@ -99,6 +99,7 @@ class NGMP_OnlineServices_LobbyInterface { public: NGMP_OnlineServices_LobbyInterface(); + void StopMatchStartCountdownIfRunning(); void SearchForLobbies(std::function onStartCallback, std::function)> onCompleteCallback); void DeregisterForSearchForLobbiesCallback() @@ -407,6 +408,13 @@ class NGMP_OnlineServices_LobbyInterface void ClearAutoReadyCountdown() { m_timeStartAutoReadyCountdown = -1; + +#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) + if (TheNGMPGame != nullptr && TheNGMPGame->IsCountdownStarted()) + { + TheNGMPGame->StopCountdown(); + } +#endif } bool HasAutoReadyCountdown() diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp index ef91fdb2836..319999a1db8 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp @@ -201,6 +201,9 @@ static NameKeyType buttonEmoteID = NAMEKEY_INVALID; static NameKeyType buttonSelectMapID = NAMEKEY_INVALID; static NameKeyType windowMapID = NAMEKEY_INVALID; +#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) +static bool s_matchStartCountdownWasRunning = false; +#endif static NameKeyType windowMapSelectMapID = NAMEKEY_INVALID; static NameKeyType checkBoxUseStatsID = NAMEKEY_INVALID; static NameKeyType checkBoxLimitSuperweaponsID = NAMEKEY_INVALID; @@ -2385,8 +2388,12 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) { if (TheNGMPGame->IsCountdownStarted()) { + // mark that countdown is currently running + s_matchStartCountdownWasRunning = true; + const int64_t timeBetweenChecks = 1000; - int64_t currTime = std::chrono::duration_cast(std::chrono::utc_clock::now().time_since_epoch()).count(); + int64_t currTime = std::chrono::duration_cast( + std::chrono::utc_clock::now().time_since_epoch()).count(); if (currTime - TheNGMPGame->GetCountdownLastCheckTime() >= timeBetweenChecks) { @@ -2402,12 +2409,12 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) else strInform.format(TheGameText->fetch("LAN:GameStartTimerPlural"), secondsRemaining); - NGMP_OnlineServices_LobbyInterface* pLobbyInterface = NGMP_OnlineServicesManager::GetInterface(); + NGMP_OnlineServices_LobbyInterface* pLobbyInterface = + NGMP_OnlineServicesManager::GetInterface(); if (pLobbyInterface != nullptr) { pLobbyInterface->SendAnnouncementMessageToCurrentLobby(strInform, true); } - // are we done? if (secondsRemaining <= 0) @@ -2416,14 +2423,33 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) TheNGMPGame->StopCountdown(); // send start game packet - std::shared_ptr pWS = NGMP_OnlineServicesManager::GetWebSocket(); + std::shared_ptr pWS = NGMP_OnlineServicesManager::GetWebSocket(); if (pWS != nullptr) { pWS->SendData_StartGame(); } } } + } + else + { + // countdown is currently NOT running. + // If it was running before, it just got cancelled or finished. + if (s_matchStartCountdownWasRunning) + { + s_matchStartCountdownWasRunning = false; + + // Re-enable Back and Start buttons when countdown stops + if (buttonBack != nullptr) + { + buttonBack->winEnable(TRUE); + } + if (buttonStart != nullptr) + { + buttonStart->winEnable(TRUE); + } + } } } #endif @@ -3749,48 +3775,30 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg } else if (controlID == comboBoxPlayerID[i] && pLobbyInterface->IsHost()) { - // We don't have anything that'll happen if we click on ourselves if (i == myGame->getLocalSlotNum()) break; - // Get + Int pos = -1; GadgetComboBoxGetSelectedPos(comboBoxPlayer[i], &pos); if (pos != SLOT_PLAYER && pos >= 0) { if (myGame->getSlot(i)->getState() == SLOT_PLAYER) { - // TODO_NGMP: Support kick again - /* - PeerRequest req; - req.peerRequestType = PeerRequest::PEERREQUEST_UTMPLAYER; - req.UTM.isStagingRoom = TRUE; - AsciiString aName; - aName.translate(myGame->getSlot(i)->getName()); - req.nick = aName.str(); - req.id = "KICK/"; - req.options = "true"; - TheGameSpyPeerMessageQueue->addRequest(req); - */ - UnicodeString name = myGame->getSlot(i)->getName(); - // NOTE: No host check here, service enforces it NGMPGameSlot* pSlot = (NGMPGameSlot*)myGame->getSlot(i); int64_t userBeingKicked = pSlot->m_userID; - NGMP_OnlineServices_LobbyInterface* pLobbyInterface = NGMP_OnlineServicesManager::GetInterface(); - if (pLobbyInterface != nullptr) - { - pLobbyInterface->UpdateCurrentLobby_KickUser(userBeingKicked, name); - } + // use existing pLobbyInterface (do NOT redeclare) + pLobbyInterface->UpdateCurrentLobby_KickUser(userBeingKicked, name); myGame->getSlot(i)->setState(SlotState(pos)); myGame->resetAccepted(); - // // TODO_NGMP - //TheGameSpyInfo->setGameOptions(); + // any slot change -> reset auto-ready & countdown + pLobbyInterface->ClearAutoReadyCountdown(); + WOLDisplaySlotList(); - //TheLAN->OnPlayerLeave(name); } else if (myGame->getSlot(i)->getState() != pos) { @@ -3798,15 +3806,15 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg myGame->getSlot(i)->setState(SlotState(pos)); Bool isAI = (myGame->getSlot(i)->isAI()); myGame->resetAccepted(); + + // any slot change -> reset auto-ready & countdown + pLobbyInterface->ClearAutoReadyCountdown(); + if (wasAI ^ isAI) PopulatePlayerTemplateComboBox(i, comboBoxPlayerTemplate, myGame, wasAI && myGame->getAllowObservers()); - // inform service - NGMP_OnlineServices_LobbyInterface* pLobbyInterface = NGMP_OnlineServicesManager::GetInterface(); - if (pLobbyInterface != nullptr) - { - pLobbyInterface->UpdateCurrentLobby_SetSlotState(i, pos); - } + // inform service about new slot state + pLobbyInterface->UpdateCurrentLobby_SetSlotState(i, pos); WOLDisplaySlotList(); } diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp index ff4e94da9d2..07685945e56 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp @@ -724,6 +724,9 @@ std::vector m_vecUsersProcessed; void PopulateLobbyPlayerListbox(void) { + +#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) + NGMP_OnlineServices_RoomsInterface* pRoomsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_StatsInterface* pStatsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_AuthInterface* pAuthInterface = NGMP_OnlineServicesManager::GetInterface(); @@ -956,7 +959,7 @@ void PopulateLobbyPlayerListbox(void) } */ } - +#endif return; if (!listboxLobbyPlayers) diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp index 09085ee5720..78f8636adf9 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp @@ -468,6 +468,16 @@ NGMP_OnlineServices_LobbyInterface::NGMP_OnlineServices_LobbyInterface() } +void NGMP_OnlineServices_LobbyInterface::StopMatchStartCountdownIfRunning() +{ +#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) + if (TheNGMPGame != nullptr && TheNGMPGame->IsCountdownStarted()) + { + TheNGMPGame->StopCountdown(); + } +#endif +} + void NGMP_OnlineServices_LobbyInterface::SearchForLobbies(std::function onStartCallback, std::function)> onCompleteCallback) { if (m_bSearchInProgress) From 868c64b9a88308c452ee8e2c1a2fedc3452b6142 Mon Sep 17 00:00:00 2001 From: MrS-ibra Date: Tue, 30 Dec 2025 02:09:53 +0300 Subject: [PATCH 2/4] match countdown fixes and UI behavior improvements --- .../GameNetwork/GameSpy/MainMenuUtils.cpp | 2 -- .../GUICallbacks/Menus/WOLGameSetupMenu.cpp | 28 +++++++++++++++---- .../GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp | 4 +-- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Core/GameEngine/Source/GameNetwork/GameSpy/MainMenuUtils.cpp b/Core/GameEngine/Source/GameNetwork/GameSpy/MainMenuUtils.cpp index 2e5c1857a10..12c65c41613 100644 --- a/Core/GameEngine/Source/GameNetwork/GameSpy/MainMenuUtils.cpp +++ b/Core/GameEngine/Source/GameNetwork/GameSpy/MainMenuUtils.cpp @@ -857,9 +857,7 @@ void StartPatchCheck( void ) NGMP_OnlineServicesManager::GetInstance()->StartVersionCheck([](bool bSuccess, bool bNeedsUpdate) { -#if defined(USE_TEST_ENV) || defined(USE_DEBUG_ON_LIVE_SERVER) bNeedsUpdate = false; -#endif cantConnectBeforeOnline = !bSuccess; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp index 319999a1db8..09c0f60bee9 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp @@ -2392,8 +2392,7 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) s_matchStartCountdownWasRunning = true; const int64_t timeBetweenChecks = 1000; - int64_t currTime = std::chrono::duration_cast( - std::chrono::utc_clock::now().time_since_epoch()).count(); + int64_t currTime = std::chrono::duration_cast(std::chrono::utc_clock::now().time_since_epoch()).count(); if (currTime - TheNGMPGame->GetCountdownLastCheckTime() >= timeBetweenChecks) { @@ -2409,8 +2408,7 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) else strInform.format(TheGameText->fetch("LAN:GameStartTimerPlural"), secondsRemaining); - NGMP_OnlineServices_LobbyInterface* pLobbyInterface = - NGMP_OnlineServicesManager::GetInterface(); + NGMP_OnlineServices_LobbyInterface* pLobbyInterface = NGMP_OnlineServicesManager::GetInterface(); if (pLobbyInterface != nullptr) { pLobbyInterface->SendAnnouncementMessageToCurrentLobby(strInform, true); @@ -2423,7 +2421,7 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) TheNGMPGame->StopCountdown(); // send start game packet - std::shared_ptr pWS = NGMP_OnlineServicesManager::GetWebSocket(); + std::shared_ptr pWS = NGMP_OnlineServicesManager::GetWebSocket(); if (pWS != nullptr) { pWS->SendData_StartGame(); @@ -3775,8 +3773,10 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg } else if (controlID == comboBoxPlayerID[i] && pLobbyInterface->IsHost()) { + // We don't have anything that'll happen if we click on ourselves if (i == myGame->getLocalSlotNum()) break; + // Get Int pos = -1; GadgetComboBoxGetSelectedPos(comboBoxPlayer[i], &pos); @@ -3784,12 +3784,25 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg { if (myGame->getSlot(i)->getState() == SLOT_PLAYER) { + // TODO_NGMP: Support kick again + /* + PeerRequest req; + req.peerRequestType = PeerRequest::PEERREQUEST_UTMPLAYER; + req.UTM.isStagingRoom = TRUE; + AsciiString aName; + aName.translate(myGame->getSlot(i)->getName()); + req.nick = aName.str(); + req.id = "KICK/"; + req.options = "true"; + TheGameSpyPeerMessageQueue->addRequest(req); + */ + UnicodeString name = myGame->getSlot(i)->getName(); + // NOTE: No host check here, service enforces it NGMPGameSlot* pSlot = (NGMPGameSlot*)myGame->getSlot(i); int64_t userBeingKicked = pSlot->m_userID; - // use existing pLobbyInterface (do NOT redeclare) pLobbyInterface->UpdateCurrentLobby_KickUser(userBeingKicked, name); myGame->getSlot(i)->setState(SlotState(pos)); @@ -3807,6 +3820,8 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg Bool isAI = (myGame->getSlot(i)->isAI()); myGame->resetAccepted(); + // // TODO_NGMP + //TheGameSpyInfo->setGameOptions(); // any slot change -> reset auto-ready & countdown pLobbyInterface->ClearAutoReadyCountdown(); @@ -3817,6 +3832,7 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg pLobbyInterface->UpdateCurrentLobby_SetSlotState(i, pos); WOLDisplaySlotList(); + //TheLAN->OnPlayerLeave(name); } } break; diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp index 07685945e56..391a2e6dbc0 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp @@ -725,8 +725,6 @@ std::vector m_vecUsersProcessed; void PopulateLobbyPlayerListbox(void) { -#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) - NGMP_OnlineServices_RoomsInterface* pRoomsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_StatsInterface* pStatsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_AuthInterface* pAuthInterface = NGMP_OnlineServicesManager::GetInterface(); @@ -959,7 +957,7 @@ void PopulateLobbyPlayerListbox(void) } */ } -#endif + return; if (!listboxLobbyPlayers) From afee16070eb7866e6c4ed26a59e0989c3b04704e Mon Sep 17 00:00:00 2001 From: MrS-ibra Date: Tue, 30 Dec 2025 03:15:40 +0300 Subject: [PATCH 3/4] same countdown behaviour for remote leave --- .../GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp | 2 -- .../GeneralsOnline/OnlineServices_LobbyInterface.cpp | 9 +++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp index 09c0f60bee9..fedf1dd9a9b 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp @@ -2349,8 +2349,6 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) TheNGMPGame->UpdateSlotsFromCurrentLobby(); - WOLDisplaySlotList(); - // Force a refresh to get latest lobby data NGMP_OnlineServices_LobbyInterface* pLobbyInterface = NGMP_OnlineServicesManager::GetInterface(); if (pLobbyInterface != nullptr) diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp index 78f8636adf9..2cc78d54f4d 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp @@ -943,6 +943,15 @@ void NGMP_OnlineServices_LobbyInterface::UpdateRoomDataCache(std::functionIsCountdownStarted() + && lobbyEntry.current_players < m_CurrentLobby.current_players) + { + TheNGMPGame->StopCountdown(); + } + // store m_CurrentLobby = lobbyEntry; From 92e25ac3dd8a6d64ab2c32d9c99f1ee4b739a2d0 Mon Sep 17 00:00:00 2001 From: MrS-ibra Date: Tue, 30 Dec 2025 11:28:16 +0300 Subject: [PATCH 4/4] countdown + UI fixes --- .../GeneralsOnline/OnlineServices_LobbyInterface.h | 2 -- .../GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp | 11 ++--------- .../GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp | 1 + .../GeneralsOnline/OnlineServices_LobbyInterface.cpp | 2 -- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h b/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h index 92c6239ea9d..fa3cbe331bd 100644 --- a/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h +++ b/GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.h @@ -409,12 +409,10 @@ class NGMP_OnlineServices_LobbyInterface { m_timeStartAutoReadyCountdown = -1; -#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) if (TheNGMPGame != nullptr && TheNGMPGame->IsCountdownStarted()) { TheNGMPGame->StopCountdown(); } -#endif } bool HasAutoReadyCountdown() diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp index fedf1dd9a9b..ed4fa879632 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLGameSetupMenu.cpp @@ -201,9 +201,7 @@ static NameKeyType buttonEmoteID = NAMEKEY_INVALID; static NameKeyType buttonSelectMapID = NAMEKEY_INVALID; static NameKeyType windowMapID = NAMEKEY_INVALID; -#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) static bool s_matchStartCountdownWasRunning = false; -#endif static NameKeyType windowMapSelectMapID = NAMEKEY_INVALID; static NameKeyType checkBoxUseStatsID = NAMEKEY_INVALID; static NameKeyType checkBoxLimitSuperweaponsID = NAMEKEY_INVALID; @@ -2386,9 +2384,7 @@ void WOLGameSetupMenuUpdate( WindowLayout * layout, void *userData) { if (TheNGMPGame->IsCountdownStarted()) { - // mark that countdown is currently running - s_matchStartCountdownWasRunning = true; - + s_matchStartCountdownWasRunning = true; // mark that countdown is currently running const int64_t timeBetweenChecks = 1000; int64_t currTime = std::chrono::duration_cast(std::chrono::utc_clock::now().time_since_epoch()).count(); @@ -3805,10 +3801,7 @@ WindowMsgHandledType WOLGameSetupMenuSystem( GameWindow *window, UnsignedInt msg myGame->getSlot(i)->setState(SlotState(pos)); myGame->resetAccepted(); - - // any slot change -> reset auto-ready & countdown - pLobbyInterface->ClearAutoReadyCountdown(); - + pLobbyInterface->ClearAutoReadyCountdown(); // any slot change -> reset auto-ready & countdown WOLDisplaySlotList(); } else if (myGame->getSlot(i)->getState() != pos) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp index 391a2e6dbc0..34467d7fbd3 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLLobbyMenu.cpp @@ -725,6 +725,7 @@ std::vector m_vecUsersProcessed; void PopulateLobbyPlayerListbox(void) { + NGMP_OnlineServices_RoomsInterface* pRoomsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_StatsInterface* pStatsInterface = NGMP_OnlineServicesManager::GetInterface(); NGMP_OnlineServices_AuthInterface* pAuthInterface = NGMP_OnlineServicesManager::GetInterface(); diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp index 2cc78d54f4d..a21e4a5e143 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_LobbyInterface.cpp @@ -470,12 +470,10 @@ NGMP_OnlineServices_LobbyInterface::NGMP_OnlineServices_LobbyInterface() void NGMP_OnlineServices_LobbyInterface::StopMatchStartCountdownIfRunning() { -#if defined(GENERALS_ONLINE_ENABLE_MATCH_START_COUNTDOWN) if (TheNGMPGame != nullptr && TheNGMPGame->IsCountdownStarted()) { TheNGMPGame->StopCountdown(); } -#endif } void NGMP_OnlineServices_LobbyInterface::SearchForLobbies(std::function onStartCallback, std::function)> onCompleteCallback)