MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / btnOkClick

Method btnOkClick

src/Menu/NewBattleState.cpp:462–541  ·  view source on GitHub ↗

* Starts the battle. * @param action Pointer to an action. */

Source from the content-addressed store, hash-verified

460 * @param action Pointer to an action.
461 */
462void NewBattleState::btnOkClick(Action *)
463{
464 save();
465 if (_missionTypes[_cbxMission->getSelected()] != "STR_BASE_DEFENSE" && _craft->getNumSoldiers() == 0 && _craft->getNumVehicles() == 0)
466 {
467 return;
468 }
469
470 SavedBattleGame *bgame = new SavedBattleGame();
471 _game->getSavedGame()->setBattleGame(bgame);
472 bgame->setMissionType(_missionTypes[_cbxMission->getSelected()]);
473 BattlescapeGenerator bgen = BattlescapeGenerator(_game);
474
475 bgen.setWorldTexture(_textures[_cbxTerrain->getSelected()]);
476
477 if (_missionTypes[_cbxMission->getSelected()] == "STR_TERROR_MISSION")
478 {
479 TerrorSite *t = new TerrorSite();
480 t->setId(1);
481 _craft->setDestination(t);
482 bgen.setTerrorSite(t);
483 bgen.setCraft(_craft);
484 _game->getSavedGame()->getTerrorSites()->push_back(t);
485 }
486 else if (_missionTypes[_cbxMission->getSelected()] == "STR_BASE_DEFENSE")
487 {
488 bgen.setBase(_craft->getBase());
489 }
490 else if (_missionTypes[_cbxMission->getSelected()] == "STR_ALIEN_BASE_ASSAULT")
491 {
492 AlienBase *b = new AlienBase();
493 b->setId(1);
494 _craft->setDestination(b);
495 bgen.setAlienBase(b);
496 bgen.setCraft(_craft);
497 _game->getSavedGame()->getAlienBases()->push_back(b);
498 }
499 else if (_missionTypes[_cbxMission->getSelected()] == "STR_MARS_CYDONIA_LANDING" || _missionTypes[_cbxMission->getSelected()] == "STR_MARS_THE_FINAL_ASSAULT")
500 {
501 bgen.setCraft(_craft);
502 }
503 else if (_craft)
504 {
505 Ufo *u = new Ufo(_game->getRuleset()->getUfo(_missionTypes[_cbxMission->getSelected()]));
506 u->setId(1);
507 _craft->setDestination(u);
508 bgen.setUfo(u);
509 bgen.setCraft(_craft);
510 if (_terrainTypes[_cbxTerrain->getSelected()] == "FOREST")
511 {
512 u->setLatitude(-0.5);
513 }
514 // either ground assault or ufo crash
515 if (RNG::generate(0,1) == 1)
516 bgame->setMissionType("STR_UFO_GROUND_ASSAULT");
517 else
518 bgame->setMissionType("STR_UFO_CRASH_RECOVERY");
519 _game->getSavedGame()->getUfos()->push_back(u);

Callers

nothing calls this directly

Calls 15

saveFunction · 0.85
generateFunction · 0.85
getSelectedMethod · 0.80
getNumSoldiersMethod · 0.80
getNumVehiclesMethod · 0.80
setBattleGameMethod · 0.80
getSavedGameMethod · 0.80
setMissionTypeMethod · 0.80
setWorldTextureMethod · 0.80
setTerrorSiteMethod · 0.80
getTerrorSitesMethod · 0.80

Tested by

no test coverage detected