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

Method btnOkClick

src/Basescape/PurchaseState.cpp:252–307  ·  view source on GitHub ↗

* Purchases the selected items. * @param action Pointer to an action. */

Source from the content-addressed store, hash-verified

250 * @param action Pointer to an action.
251 */
252void 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/**

Callers

nothing calls this directly

Calls 15

setFundsMethod · 0.80
getSavedGameMethod · 0.80
getFundsMethod · 0.80
getPersonnelTimeMethod · 0.80
setSoldierMethod · 0.80
genSoldierMethod · 0.80
getTransfersMethod · 0.80
setItemsMethod · 0.80
getRulesetMethod · 0.45
setScientistsMethod · 0.45
setEngineersMethod · 0.45
getCraftMethod · 0.45

Tested by

no test coverage detected