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