* Purchases the selected items. * @param action Pointer to an action. */
| 250 | * @param action Pointer to an action. |
| 251 | */ |
| 252 | void PurchaseState::btnOkClick(Action *) |
| 253 | { |
| 254 | _game->getSavedGame()->setFunds(_game->getSavedGame()->getFunds() - _total); |
| 255 | for (size_t i = 0; i < _qtys.size(); ++i) |
| 256 | { |
| 257 | if (_qtys[i] > 0) |
| 258 | { |
| 259 | // Buy soldiers |
| 260 | if (i == 0) |
| 261 | { |
| 262 | for (int s = 0; s < _qtys[i]; s++) |
| 263 | { |
| 264 | Transfer *t = new Transfer(_game->getRuleset()->getPersonnelTime()); |
| 265 | t->setSoldier(_game->getRuleset()->genSoldier(_game->getSavedGame())); |
| 266 | _base->getTransfers()->push_back(t); |
| 267 | } |
| 268 | } |
| 269 | // Buy scientists |
| 270 | else if (i == 1) |
| 271 | { |
| 272 | Transfer *t = new Transfer(_game->getRuleset()->getPersonnelTime()); |
| 273 | t->setScientists(_qtys[i]); |
| 274 | _base->getTransfers()->push_back(t); |
| 275 | } |
| 276 | // Buy engineers |
| 277 | else if (i == 2) |
| 278 | { |
| 279 | Transfer *t = new Transfer(_game->getRuleset()->getPersonnelTime()); |
| 280 | t->setEngineers(_qtys[i]); |
| 281 | _base->getTransfers()->push_back(t); |
| 282 | } |
| 283 | // Buy crafts |
| 284 | else if (i >= 3 && i < 3 + _crafts.size()) |
| 285 | { |
| 286 | for (int c = 0; c < _qtys[i]; c++) |
| 287 | { |
| 288 | RuleCraft *rc = _game->getRuleset()->getCraft(_crafts[i - 3]); |
| 289 | Transfer *t = new Transfer(rc->getTransferTime()); |
| 290 | Craft *craft = new Craft(rc, _base, _game->getSavedGame()->getId(_crafts[i - 3])); |
| 291 | craft->setStatus("STR_REFUELLING"); |
| 292 | t->setCraft(craft); |
| 293 | _base->getTransfers()->push_back(t); |
| 294 | } |
| 295 | } |
| 296 | // Buy items |
| 297 | else |
| 298 | { |
| 299 | RuleItem *ri = _game->getRuleset()->getItem(_items[i - 3 - _crafts.size()]); |
| 300 | Transfer *t = new Transfer(ri->getTransferTime()); |
| 301 | t->setItems(_items[i - 3 - _crafts.size()], _qtys[i]); |
| 302 | _base->getTransfers()->push_back(t); |
| 303 | } |
| 304 | } |
| 305 | } |
| 306 | _game->popState(); |
| 307 | } |
| 308 | |
| 309 | /** |
nothing calls this directly
no test coverage detected