* Increases the quantity of the selected item to transfer by "change". * @param change How much we want to add. */
| 541 | * @param change How much we want to add. |
| 542 | */ |
| 543 | void 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; |
nothing calls this directly
no test coverage detected