* Starts the battle. * @param action Pointer to an action. */
| 460 | * @param action Pointer to an action. |
| 461 | */ |
| 462 | void 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); |
nothing calls this directly
no test coverage detected