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.CampaignFleetAPI;
008import com.fs.starfarer.api.campaign.FleetAssignment;
009import com.fs.starfarer.api.campaign.InteractionDialogAPI;
010import com.fs.starfarer.api.campaign.SectorEntityToken;
011import com.fs.starfarer.api.campaign.rules.MemoryAPI;
012import com.fs.starfarer.api.util.Misc.Token;
013
014
015/**
016 * GiveOtherFleetAssignment <assignment> <duration> <actionText> <optional target id>
017 */
018public class GiveOtherFleetAssignment 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                if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false;
023
024                CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
025                
026                FleetAssignment assignment = FleetAssignment.valueOf(params.get(0).getString(memoryMap));
027                float duration = params.get(1).getFloat(memoryMap);
028                String actionText = null;
029                if (params.size() > 2) {
030                        actionText = params.get(2).getString(memoryMap);
031                }
032                
033                SectorEntityToken target = null;
034                if (params.size() > 3) {
035                        String id = params.get(3).getString(memoryMap);
036                        target = Global.getSector().getEntityById(id);
037                }
038                fleet.getAI().addAssignmentAtStart(assignment, target, duration, actionText, null);
039                return true;
040        }
041
042}