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}