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

Method increaseByValue

src/Basescape/TransferItemsState.cpp:543–645  ·  view source on GitHub ↗

* Increases the quantity of the selected item to transfer by "change". * @param change How much we want to add. */

Source from the content-addressed store, hash-verified

541 * @param change How much we want to add.
542 */
543void TransferItemsState::increaseByValue(int change)
544{
545 const enum TransferType selType = getType(_sel);
546 RuleItem * selItem = NULL;
547
548 if (TRANSFER_ITEM == selType)
549 selItem = _game->getRuleset()->getItem(_items[getItemIndex(_sel)]);
550
551 if (0 >= change || getQuantity() <= _transferQty[_sel]) return;
552 // Check Living Quarters
553 if ((TRANSFER_SOLDIER == selType || TRANSFER_SCIENTIST == selType || TRANSFER_ENGINEER == selType)
554 && _pQty + 1 > _baseTo->getAvailableQuarters() - _baseTo->getUsedQuarters())
555 {
556 _timerInc->stop();
557 _game->pushState(new ErrorMessageState(_game, "STR_NO_FREE_ACCOMODATION", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
558 return;
559 }
560 if (TRANSFER_CRAFT == selType )
561 {
562 Craft *craft = _crafts[_sel - _soldiers.size()];
563 if (_cQty + 1 > _baseTo->getAvailableHangars() - _baseTo->getUsedHangars())
564 {
565 _timerInc->stop();
566 _game->pushState(new ErrorMessageState(_game, "STR_NO_FREE_HANGARS_FOR_TRANSFER", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
567 return;
568 }
569 if (_pQty + craft->getNumSoldiers() > _baseTo->getAvailableQuarters() - _baseTo->getUsedQuarters())
570 {
571 _timerInc->stop();
572 _game->pushState(new ErrorMessageState(_game, "STR_NO_FREE_ACCOMODATION_CREW", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
573 return;
574 }
575 if (Options::storageLimitsEnforced && _baseTo->storesOverfull(_iQty + craft->getItems()->getTotalSize(_game->getRuleset())))
576 {
577 _timerInc->stop();
578 _game->pushState(new ErrorMessageState(_game, "STR_NOT_ENOUGH_STORE_SPACE_FOR_CRAFT", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
579 return;
580 }
581 }
582 if (TRANSFER_ITEM == selType && !selItem->getAlien()
583 && _baseTo->storesOverfull(selItem->getSize() + _iQty))
584 {
585 _timerInc->stop();
586 _game->pushState(new ErrorMessageState(_game, "STR_NOT_ENOUGH_STORE_SPACE", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
587 return;
588 }
589 if (TRANSFER_ITEM == selType && selItem->getAlien()
590 && Options::storageLimitsEnforced * _aQty + 1 > _baseTo->getAvailableContainment() - Options::storageLimitsEnforced * _baseTo->getUsedContainment())
591 {
592 _timerInc->stop();
593 _game->pushState(new ErrorMessageState(_game, "STR_NO_ALIEN_CONTAINMENT_FOR_TRANSFER", _palette, Palette::blockOffset(15)+1, "BACK13.SCR", 0));
594 return;
595 }
596
597 // Personnel count
598 if (TRANSFER_SOLDIER == selType || TRANSFER_SCIENTIST == selType || TRANSFER_ENGINEER == selType)
599 {
600 int freeQuarters = _baseTo->getAvailableQuarters() - _baseTo->getUsedQuarters() - _pQty;

Callers

nothing calls this directly

Calls 15

AreSameFunction · 0.85
getAvailableQuartersMethod · 0.80
getUsedQuartersMethod · 0.80
pushStateMethod · 0.80
getAvailableHangarsMethod · 0.80
getUsedHangarsMethod · 0.80
getNumSoldiersMethod · 0.80
storesOverfullMethod · 0.80
getTotalSizeMethod · 0.80
getAlienMethod · 0.80
getUsedContainmentMethod · 0.80

Tested by

no test coverage detected