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.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI; 010import com.fs.starfarer.api.campaign.rules.MemoryAPI; 011import com.fs.starfarer.api.impl.campaign.ids.Commodities; 012import com.fs.starfarer.api.util.Misc; 013import com.fs.starfarer.api.util.Misc.Token; 014 015/** 016 * ShowRemainingCapacity <commodity id> 017 */ 018public class ShowRemainingCapacity extends BaseCommandPlugin { 019 020 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 021 if (dialog == null) return false; 022 023 String cid = Commodities.SUPPLIES; // show cargo capacity by default 024 if (params.size() >= 1) { 025 cid = params.get(0).getString(memoryMap); 026 } 027 028 CommoditySpecAPI spec = Global.getSettings().getCommoditySpec(cid); 029 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo(); 030 String str = ""; 031 int cap = 0; 032 if (spec.isFuel()) { 033 cap = cargo.getFreeFuelSpace(); 034 if (cap > 1) { 035 str += "Your fleet's fuel tanks can hold an additional %s units of fuel."; 036 } else { 037 str += "Your fleet's fuel tanks are currently full."; 038 } 039 } else if (spec.isPersonnel()) { 040 cap = cargo.getFreeCrewSpace(); 041 if (cap > 1) { 042 str += "Your fleet's crew quarters can accommodate an additional %s personnel."; 043 } else { 044 str += "Your fleet's crew berths are currently full."; 045 } 046 } else { 047 cap = (int) cargo.getSpaceLeft(); 048 if (cap > 1) { 049 str += "Your fleet's holds can accommodate an additional %s units of cargo."; 050 } else { 051 str += "Your fleet's cargo holds are currently full."; 052 } 053 } 054 dialog.getTextPanel().addPara(str, Misc.getHighlightColor(), Misc.getWithDGS(cap)); 055 056 return true; 057 } 058} 059 060