001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.CargoAPI;
008import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
009import com.fs.starfarer.api.campaign.InteractionDialogAPI;
010import com.fs.starfarer.api.campaign.SpecialItemData;
011import com.fs.starfarer.api.campaign.rules.MemoryAPI;
012import com.fs.starfarer.api.util.Misc.Token;
013
014/**
015 *      PlayerHasCargo <cargo id - commodity, weapon, fighter, special item> <optional: quantity, default 1>
016 */
017public class PlayerHasCargo extends BaseCommandPlugin {
018
019        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
020                if (dialog == null) return false;
021                
022                String id = params.get(0).getString(memoryMap);
023                float quantity = 1;
024                if (params.size() > 1) {
025                        quantity = params.get(1).getFloat(memoryMap);
026                }
027                
028                CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo();
029                
030                if (cargo.getCommodityQuantity(id) >= quantity) return true;
031                if (cargo.getNumFighters(id) >= quantity) return true;
032                if (cargo.getNumWeapons(id) >= quantity) return true;
033                if (cargo.getQuantity(CargoItemType.SPECIAL, new SpecialItemData(id, null)) >= quantity) return true;
034                
035                return false;
036        }
037
038}