1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

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

This commit is contained in:
Dydzio
2018-07-18 23:58:38 +02:00
committed by ArseniyShestakov
parent 84be667363
commit e4a9ce3efe
3 changed files with 13 additions and 10 deletions

View File

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

View File

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

View File

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