void SinglePlayerMenu::CloseChildWindow() { std::string filename = ""; std::string extension = ""; LoadSaveWindow* pLoadSaveWindow = dynamic_cast<LoadSaveWindow*>(pChildWindow); if(pLoadSaveWindow != NULL) { filename = pLoadSaveWindow->GetFilename(); extension = pLoadSaveWindow->GetExtension(); } MenuClass::CloseChildWindow(); if(filename != "") { if(extension == "dls") { try { startSinglePlayerGame( GameInitSettings(filename) ); } catch (std::exception& e) { // most probably the savegame file is not valid or from a different dune legacy version OpenWindow(MessageBox::Create(e.what())); } } else if(extension == "rpl") { startReplay(filename); } } }
void SinglePlayerMenu::OnCampaign() { int player; HouseChoiceMenu* pHouseChoiceMenu = new HouseChoiceMenu(); if(pHouseChoiceMenu == NULL) { perror("SinglePlayerMenu::OnCampaign()"); exit(EXIT_FAILURE); } player = pHouseChoiceMenu->showMenu(); delete pHouseChoiceMenu; if(player < 0) { return; } GameInitSettings init((HOUSETYPE) player, settings.General.ConcreteRequired, settings.General.FogOfWar); for(int houseID = 0; houseID < NUM_HOUSES; houseID++) { if(houseID == player) { GameInitSettings::HouseInfo humanHouseInfo((HOUSETYPE) player, 1); humanHouseInfo.addPlayerInfo( GameInitSettings::PlayerInfo(settings.General.PlayerName, "HumanPlayer") ); init.addHouseInfo(humanHouseInfo); } else { GameInitSettings::HouseInfo aiHouseInfo((HOUSETYPE) houseID, 2); aiHouseInfo.addPlayerInfo( GameInitSettings::PlayerInfo(getHouseNameByNumber( (HOUSETYPE) houseID), "AIPlayer", stringify(settings.playerDifficulty)) ); init.addHouseInfo(aiHouseInfo); } } startSinglePlayerGame(init); quit(); }
void SinglePlayerSkirmishMenu::onStart() { HOUSETYPE houseChoice = (HOUSETYPE) houseOrder[currentHouseChoiceScrollPos + selectedButton]; GameInitSettings init(houseChoice,mission,currentGameOptions); for(int houseID = 0; houseID < NUM_HOUSES; houseID++) { if(houseID == houseChoice) { GameInitSettings::HouseInfo humanHouseInfo(houseChoice, 1); humanHouseInfo.addPlayerInfo( GameInitSettings::PlayerInfo(settings.general.playerName, HUMANPLAYERCLASS) ); init.addHouseInfo(humanHouseInfo); } else { GameInitSettings::HouseInfo aiHouseInfo((HOUSETYPE) houseID, 2); aiHouseInfo.addPlayerInfo( GameInitSettings::PlayerInfo(getHouseNameByNumber( (HOUSETYPE) houseID), settings.ai.campaignAI) ); init.addHouseInfo(aiHouseInfo); } } startSinglePlayerGame(init); quit(); }