Browse Source

Do not create main menu UI for game restart (#462)

Dydzio 7 years ago
parent
commit
e4a9ce3efe
3 changed files with 13 additions and 10 deletions
  1. 11 8
      client/CServerHandler.cpp
  2. 1 1
      client/CServerHandler.h
  3. 1 1
      client/NetPacksLobbyClient.cpp

+ 11 - 8
client/CServerHandler.cpp

@@ -478,7 +478,7 @@ void CServerHandler::startGameplay()
 	state = EClientState::GAMEPLAY;
 }
 
-void CServerHandler::endGameplay(bool closeConnection)
+void CServerHandler::endGameplay(bool closeConnection, bool restart)
 {
 	client->endGame();
 	vstd::clear_pointer(client);
@@ -490,14 +490,17 @@ void CServerHandler::endGameplay(bool closeConnection)
 		CSH->sendClientDisconnecting();
 		logNetwork->info("Closed connection.");
 	}
-	if(CMM)
+	if(!restart)
 	{
-		GH.curInt = CMM;
-		CMM->enable();
-	}
-	else
-	{
-		GH.curInt = CMainMenu::create();
+		if(CMM)
+		{
+			GH.curInt = CMM;
+			CMM->enable();
+		}
+		else
+		{
+			GH.curInt = CMainMenu::create();
+		}
 	}
 }
 

+ 1 - 1
client/CServerHandler.h

@@ -132,7 +132,7 @@ public:
 	void sendStartGame(bool allowOnlyAI = false) const override;
 
 	void startGameplay();
-	void endGameplay(bool closeConnection = true);
+	void endGameplay(bool closeConnection = true, bool restart = false);
 	void startCampaignScenario(std::shared_ptr<CCampaignState> cs = {});
 
 	// TODO: LobbyState must be updated within game so we should always know how many player interfaces our client handle

+ 1 - 1
client/NetPacksLobbyClient.cpp

@@ -100,7 +100,7 @@ bool LobbyStartGame::applyOnLobbyHandler(CServerHandler * handler)
 {
 	if(handler->state == EClientState::GAMEPLAY)
 	{
-		handler->endGameplay(false);
+		handler->endGameplay(false, true);
 	}
 	handler->state = EClientState::STARTING;
 	if(handler->si->mode != StartInfo::LOAD_GAME)