* Handle base defense * @param base Base to defend. * @param ufo Ufo attacking base. */
| 2124 | * @param ufo Ufo attacking base. |
| 2125 | */ |
| 2126 | void GeoscapeState::handleBaseDefense(Base *base, Ufo *ufo) |
| 2127 | { |
| 2128 | // Whatever happens in the base defense, the UFO has finished its duty |
| 2129 | ufo->setStatus(Ufo::DESTROYED); |
| 2130 | |
| 2131 | if (base->getAvailableSoldiers(true) > 0) |
| 2132 | { |
| 2133 | SavedBattleGame *bgame = new SavedBattleGame(); |
| 2134 | _game->getSavedGame()->setBattleGame(bgame); |
| 2135 | bgame->setMissionType("STR_BASE_DEFENSE"); |
| 2136 | BattlescapeGenerator bgen = BattlescapeGenerator(_game); |
| 2137 | bgen.setBase(base); |
| 2138 | bgen.setAlienRace(ufo->getAlienRace()); |
| 2139 | bgen.run(); |
| 2140 | _pause = true; |
| 2141 | _game->pushState(new BriefingState(_game, 0, base)); |
| 2142 | } |
| 2143 | else |
| 2144 | { |
| 2145 | // Please garrison your bases in future |
| 2146 | popup(new BaseDestroyedState(_game, base)); |
| 2147 | } |
| 2148 | } |
| 2149 | |
| 2150 | /** |
| 2151 | * Determine the alien missions to start this month. |
no test coverage detected