* 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. */
| 749 | * @return The ammo ID missing for rearming, or "" if none. |
| 750 | */ |
| 751 | std::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. |
no test coverage detected