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

Method unload

src/Battlescape/Inventory.cpp:749–793  ·  view source on GitHub ↗

* Unloads the selected weapon, placing the gun * on the right hand and the ammo on the left hand. * @return The success of the weapon being unlaoded. */

Source from the content-addressed store, hash-verified

747 * @return The success of the weapon being unlaoded.
748 */
749bool Inventory::unload()
750{
751 // Must be holding an item
752 if (_selItem == 0)
753 {
754 return false;
755 }
756
757 // Item must be loaded
758 if (_selItem->getAmmoItem() == 0 && !_selItem->getRules()->getCompatibleAmmo()->empty())
759 {
760 _warning->showMessage(_game->getLanguage()->getString("STR_NO_AMMUNITION_LOADED"));
761 }
762 if (_selItem->getAmmoItem() == 0 || !_selItem->needsAmmo())
763 {
764 return false;
765 }
766
767 // Hands must be free
768 for (std::vector<BattleItem*>::iterator i = _selUnit->getInventory()->begin(); i != _selUnit->getInventory()->end(); ++i)
769 {
770 if ((*i)->getSlot()->getType() == INV_HAND && (*i) != _selItem)
771 {
772 _warning->showMessage(_game->getLanguage()->getString("STR_BOTH_HANDS_MUST_BE_EMPTY"));
773 return false;
774 }
775 }
776
777 if (!_tu || _selUnit->spendTimeUnits(8))
778 {
779 moveItem(_selItem->getAmmoItem(), _game->getRuleset()->getInventory("STR_LEFT_HAND"), 0, 0);
780 _selItem->getAmmoItem()->moveToOwner(_selUnit);
781 moveItem(_selItem, _game->getRuleset()->getInventory("STR_RIGHT_HAND"), 0, 0);
782 _selItem->moveToOwner(_selUnit);
783 _selItem->setAmmoItem(0);
784 setSelectedItem(0);
785 }
786 else
787 {
788 _warning->showMessage(_game->getLanguage()->getString("STR_NOT_ENOUGH_TIME_UNITS"));
789 return false;
790 }
791
792 return true;
793}
794
795/**
796 * Arranges items on the ground for the inventory display.

Callers 1

btnUnloadClickMethod · 0.80

Calls 15

getCompatibleAmmoMethod · 0.80
showMessageMethod · 0.80
getLanguageMethod · 0.80
needsAmmoMethod · 0.80
spendTimeUnitsMethod · 0.80
moveToOwnerMethod · 0.80
setAmmoItemMethod · 0.80
getAmmoItemMethod · 0.45
emptyMethod · 0.45
getRulesMethod · 0.45
getStringMethod · 0.45
getInventoryMethod · 0.45

Tested by

no test coverage detected