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.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.econ.MarketAPI;
009import com.fs.starfarer.api.campaign.rules.MemoryAPI;
010import com.fs.starfarer.api.impl.campaign.TempImmigrationModifier;
011import com.fs.starfarer.api.util.Misc.Token;
012
013/**
014 * Per month can be negative.
015 * AddPopGrowth <per month growth> <duration days> <description> <optional marketId>
016 */
017public class AddPopGrowth extends BaseCommandPlugin {
018        
019        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
020                
021                float growth = params.get(0).getFloat(memoryMap);
022                float dur = params.get(1).getFloat(memoryMap);
023                String desc = params.get(2).getString(memoryMap);
024                
025                String marketId = null;
026                if (params.size() > 3) marketId = params.get(3).getString(memoryMap);
027                
028                MarketAPI market = null;
029                if (marketId != null) {
030                        market = Global.getSector().getEconomy().getMarket(marketId);
031                } else if (dialog.getInteractionTarget() != null) {
032                        market = dialog.getInteractionTarget().getMarket();
033                }
034                
035                if (market == null) return false;
036                
037                new TempImmigrationModifier(market, growth, dur, desc);
038        
039                return true;
040        }
041}