diff -r f04327ab2dd6 -r 947025eeb5dc QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sat Jun 18 16:56:45 2011 +0200 +++ b/QTfrontend/hwform.cpp Sat Jun 18 17:26:13 2011 +0200 @@ -458,8 +458,7 @@ #ifdef USE_XFIRE updateXfire(); #endif - if(id == ID_PAGE_DRAWMAP) - { + if (id == ID_PAGE_DRAWMAP) { DrawMapScene * scene; if(lastid == ID_PAGE_MULTIPLAYER) scene = ui.pageMultiplayer->gameCFG->pMapContainer->getDrawMapScene(); @@ -468,9 +467,9 @@ ui.pageDrawMap->drawMapWidget->setScene(scene); } - if(lastid == ID_PAGE_DRAWMAP) - { - if(id == ID_PAGE_MULTIPLAYER) + + if (lastid == ID_PAGE_DRAWMAP) { + if (id == ID_PAGE_MULTIPLAYER) ui.pageMultiplayer->gameCFG->pMapContainer->mapDrawingFinished(); else ui.pageNetGame->pGameCFG->pMapContainer->mapDrawingFinished(); @@ -485,37 +484,35 @@ ui.pageOptions->CBTeamName->setVisible(false); ui.pageOptions->LblNoEditTeam->setVisible(true); - if(id == ID_PAGE_MULTIPLAYER) { - curTeamSelWidget = ui.pageMultiplayer->teamsSelect; + if (id == ID_PAGE_MULTIPLAYER) { + curTeamSelWidget = ui.pageMultiplayer->teamsSelect; } else { - curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget; + curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget; } QList teamsList; - for(QStringList::iterator it = tmNames.begin(); it != tmNames.end(); it++) { - HWTeam team(*it); - team.LoadFromFile(); - teamsList.push_back(team); + for (QStringList::iterator it = tmNames.begin(); it != tmNames.end(); it++) { + HWTeam team(*it); + team.LoadFromFile(); + teamsList.push_back(team); } - if(lastid == ID_PAGE_SETUP || lastid == ID_PAGE_DRAWMAP) { // _TEAM - if (editedTeam) { - curTeamSelWidget->addTeam(*editedTeam); - } - } else if(lastid != ID_PAGE_GAMESTATS + if (lastid == ID_PAGE_SETUP || lastid == ID_PAGE_DRAWMAP) { // _TEAM + if (editedTeam) { + curTeamSelWidget->addTeam(*editedTeam); + } + } else if (lastid != ID_PAGE_GAMESTATS && lastid != ID_PAGE_INGAME && lastid != ID_PAGE_SCHEME && lastid != ID_PAGE_SELECTWEAPON) { curTeamSelWidget->resetPlayingTeams(teamsList); } } else - if (id == ID_PAGE_GAMESTATS) - { - ui.pageGameStats->renderStats(); - } + if (id == ID_PAGE_GAMESTATS) { + ui.pageGameStats->renderStats(); + } - if(id == ID_PAGE_MAIN) - { + if (id == ID_PAGE_MAIN) { ui.pageOptions->BtnNewTeam->setVisible(true); ui.pageOptions->BtnEditTeam->setVisible(true); ui.pageOptions->BtnDeleteTeam->setVisible(true); @@ -524,16 +521,16 @@ } // load and save ignore/friends lists - if(lastid == ID_PAGE_NETGAME) // leaving a room + if (lastid == ID_PAGE_NETGAME) // leaving a room ui.pageNetGame->pChatWidget->saveLists(ui.pageOptions->editNetNick->text()); else if(lastid == ID_PAGE_ROOMSLIST) // leaving the lobby ui.pageRoomsList->chatWidget->saveLists(ui.pageOptions->editNetNick->text()); - if(id == ID_PAGE_NETGAME) // joining a room + if (id == ID_PAGE_NETGAME) // joining a room ui.pageNetGame->pChatWidget->loadLists(ui.pageOptions->editNetNick->text()); // joining the lobby - else if(id == ID_PAGE_ROOMSLIST) { - if ( hwnet && game && game->gameState == gsStarted) { // abnormal exit - kick or room destruction - send kills. + else if (id == ID_PAGE_ROOMSLIST) { + if (hwnet && game && game->gameState == gsStarted) { // abnormal exit - kick or room destruction - send kills. game->netSuspend = true; game->KillAllTeams(); } @@ -719,6 +716,9 @@ void HWForm::PlayDemoQuick(const QString & demofilename) { + if (game && game->gameState == gsStarted) return; + GoBack(); //needed to cleanly disconnect from netgame + GoToPage(ID_PAGE_MAIN); CreateGame(0, 0, 0); game->PlayDemo(demofilename); }