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

Method rearm

src/Savegame/Craft.cpp:751–790  ·  view source on GitHub ↗

* Rearms the craft's weapons by adding ammo every hour * while it's docked in the base. * @param rules Pointer to ruleset. * @return The ammo ID missing for rearming, or "" if none. */

Source from the content-addressed store, hash-verified

749 * @return The ammo ID missing for rearming, or "" if none.
750 */
751std::string Craft::rearm(Ruleset *rules)
752{
753 std::string ammo = "";
754 for (std::vector<CraftWeapon*>::iterator i = _weapons.begin(); ; ++i)
755 {
756 if (i == _weapons.end())
757 {
758 _status = "STR_REFUELLING";
759 break;
760 }
761 if (*i != 0 && (*i)->isRearming())
762 {
763 std::string clip = (*i)->getRules()->getClipItem();
764 int available = _base->getItems()->getItem(clip);
765 if (clip == "")
766 {
767 (*i)->rearm(0, 0);
768 }
769 else if (available > 0)
770 {
771 int used = (*i)->rearm(available, rules->getItem(clip)->getClipSize());
772
773 if (used > available)
774 {
775 ammo = clip;
776 (*i)->setRearming(false);
777 }
778
779 _base->getItems()->removeItem(clip, used);
780 }
781 else
782 {
783 ammo = clip;
784 (*i)->setRearming(false);
785 }
786 break;
787 }
788 }
789 return ammo;
790}
791
792/**
793 * Returns the craft's battlescape status.

Callers 1

time1HourMethod · 0.45

Calls 8

isRearmingMethod · 0.80
getClipItemMethod · 0.80
getClipSizeMethod · 0.80
setRearmingMethod · 0.80
getRulesMethod · 0.45
getItemMethod · 0.45
getItemsMethod · 0.45
removeItemMethod · 0.45

Tested by

no test coverage detected