* Decreases the quantity of the selected item to transfer by "change". * @param change How much we want to remove. */
| 659 | * @param change How much we want to remove. |
| 660 | */ |
| 661 | void 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. |
nothing calls this directly
no test coverage detected