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

Method decreaseByValue

src/Basescape/TransferItemsState.cpp:661–698  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

659 * @param change How much we want to remove.
660 */
661void TransferItemsState::decreaseByValue(int change)
662{
663 const enum TransferType selType = getType(_sel);
664 if (0 >= change || 0 >= _transferQty[_sel]) return;
665 Craft *craft = 0;
666 change = std::min(_transferQty[_sel], change);
667 // Personnel count
668 if (TRANSFER_SOLDIER == selType || TRANSFER_SCIENTIST == selType || TRANSFER_ENGINEER == selType)
669 {
670 _pQty -= change;
671 }
672 // Craft count
673 else if (TRANSFER_CRAFT == selType)
674 {
675 craft = _crafts[_sel - _soldiers.size()];
676 _cQty--;
677 _pQty -= craft->getNumSoldiers();
678 _iQty -= craft->getItems()->getTotalSize(_game->getRuleset());
679 }
680 // Item count
681 else if (TRANSFER_ITEM == selType)
682 {
683 const RuleItem * selItem = _game->getRuleset()->getItem(_items[getItemIndex(_sel)]);
684 if (!selItem->getAlien())
685 {
686 _iQty -= selItem->getSize() * change;
687 }
688 else
689 {
690 _aQty -= change;
691 }
692 }
693 _baseQty[_sel] += change;
694 _transferQty[_sel] -= change;
695 if (!Options::canTransferCraftsWhileAirborne || 0 == craft || craft->getStatus() != "STR_OUT")
696 _total -= getCost() * change;
697 updateItemStrings();
698}
699
700/**
701 * Updates the quantity-strings of the selected item.

Callers

nothing calls this directly

Calls 8

getNumSoldiersMethod · 0.80
getTotalSizeMethod · 0.80
getAlienMethod · 0.80
getItemsMethod · 0.45
getRulesetMethod · 0.45
getItemMethod · 0.45
getSizeMethod · 0.45
getStatusMethod · 0.45

Tested by

no test coverage detected