From a585a6663f8dc03e98f1388932457ce2b5aad82d Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Thu, 13 May 2010 21:47:14 +0000 Subject: [PATCH] - added some bugfixes related to timing ans corrupt state in network and regular game menus --- .../glest_game/menu/menu_state_custom_game.cpp | 6 ++++++ source/glest_game/menu/menu_state_join_game.cpp | 17 +++++++++++++---- source/glest_game/menu/menu_state_join_game.h | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/source/glest_game/menu/menu_state_custom_game.cpp b/source/glest_game/menu/menu_state_custom_game.cpp index c65b59e5..c92022d1 100644 --- a/source/glest_game/menu/menu_state_custom_game.cpp +++ b/source/glest_game/menu/menu_state_custom_game.cpp @@ -219,6 +219,8 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, b } MenuStateCustomGame::~MenuStateCustomGame() { + needToBroadcastServerSettings = false; + needToRepublishToMasterserver = false; BaseThread::shutdownAndWait(publishToMasterserverThread); delete publishToMasterserverThread; publishToMasterserverThread = NULL; @@ -245,6 +247,8 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton){ } */ + needToBroadcastServerSettings = false; + needToRepublishToMasterserver = false; BaseThread::shutdownAndWait(publishToMasterserverThread); mainMenu->setState(new MenuStateNewGame(program, mainMenu)); } @@ -284,6 +288,8 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton){ publishToMasterserver(); simpleTask(); } + needToBroadcastServerSettings = false; + needToRepublishToMasterserver = false; BaseThread::shutdownAndWait(publishToMasterserverThread); program->setState(new Game(program, &gameSettings)); } diff --git a/source/glest_game/menu/menu_state_join_game.cpp b/source/glest_game/menu/menu_state_join_game.cpp index 15488451..af603cb7 100644 --- a/source/glest_game/menu/menu_state_join_game.cpp +++ b/source/glest_game/menu/menu_state_join_game.cpp @@ -49,6 +49,8 @@ MenuStateJoinGame::MenuStateJoinGame(Program *program, MainMenu *mainMenu, bool Config &config= Config::getInstance(); NetworkManager &networkManager= NetworkManager::getInstance(); networkManager.end(); + networkManager.init(nrClient); + abortAutoFind = false; serversSavedFile = serverFileName; if(getGameReadWritePath() != "") { @@ -114,7 +116,6 @@ MenuStateJoinGame::MenuStateJoinGame(Program *program, MainMenu *mainMenu, bool labelInfo.init(330, 370); labelInfo.setText(""); - networkManager.init(nrClient); connected= false; playerIndex= -1; @@ -132,14 +133,15 @@ MenuStateJoinGame::MenuStateJoinGame(Program *program, MainMenu *mainMenu, bool chatManager.init(&console, -1); } MenuStateJoinGame::~MenuStateJoinGame() { - NetworkManager &networkManager= NetworkManager::getInstance(); - ClientInterface* clientInterface= networkManager.getClientInterface(); - clientInterface->stopServerDiscovery(); + abortAutoFind = true; } void MenuStateJoinGame::DiscoveredServers(std::vector serverList) { SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); + if(abortAutoFind == true) { + return; + } // Testing multi-server //serverList.push_back("test1"); //serverList.push_back("test2"); @@ -205,6 +207,8 @@ void MenuStateJoinGame::mouseClick(int x, int y, MouseButton mouseButton) { soundRenderer.playFx(coreData.getClickSoundA()); + clientInterface->stopServerDiscovery(); + if(clientInterface->getSocket() != NULL) { if(clientInterface->isConnected() == true) @@ -214,6 +218,7 @@ void MenuStateJoinGame::mouseClick(int x, int y, MouseButton mouseButton) } clientInterface->close(); } + abortAutoFind = true; mainMenu->setState(new MenuStateRoot(program, mainMenu)); } @@ -417,6 +422,8 @@ void MenuStateJoinGame::update() SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] clientInterface->getLaunchGame() - B\n",__FILE__,__FUNCTION__); + abortAutoFind = true; + clientInterface->stopServerDiscovery(); program->setState(new Game(program, clientInterface->getGameSettings())); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] clientInterface->getLaunchGame() - C\n",__FILE__,__FUNCTION__); @@ -508,6 +515,8 @@ void MenuStateJoinGame::connectToServer() config.setString("ServerIp", serverIp.getString()); config.save(); + abortAutoFind = true; + clientInterface->stopServerDiscovery(); mainMenu->setState(new MenuStateConnectedGame(program, mainMenu)); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] END\n",__FILE__,__FUNCTION__); diff --git a/source/glest_game/menu/menu_state_join_game.h b/source/glest_game/menu/menu_state_join_game.h index 158efcf9..cdb4cc6e 100644 --- a/source/glest_game/menu/menu_state_join_game.h +++ b/source/glest_game/menu/menu_state_join_game.h @@ -59,6 +59,7 @@ private: ChatManager chatManager; string serversSavedFile; + bool abortAutoFind; public: MenuStateJoinGame(Program *program, MainMenu *mainMenu, bool connect= false, Ip serverIp= Ip());