001package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
002
003import java.util.List;
004import java.util.Map;
005import java.util.Random;
006
007import org.lwjgl.util.vector.Vector2f;
008
009import com.fs.starfarer.api.Global;
010import com.fs.starfarer.api.campaign.CampaignFleetAPI;
011import com.fs.starfarer.api.campaign.InteractionDialogAPI;
012import com.fs.starfarer.api.campaign.OptionPanelAPI;
013import com.fs.starfarer.api.campaign.SectorEntityToken;
014import com.fs.starfarer.api.campaign.StarSystemAPI;
015import com.fs.starfarer.api.campaign.TextPanelAPI;
016import com.fs.starfarer.api.campaign.rules.MemoryAPI;
017import com.fs.starfarer.api.impl.PlayerFleetPersonnelTracker;
018import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
019import com.fs.starfarer.api.impl.campaign.intel.misc.CryosleeperIntel;
020import com.fs.starfarer.api.impl.campaign.intel.misc.HypershuntIntel;
021import com.fs.starfarer.api.impl.campaign.intel.misc.WormholeIntel;
022import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
023import com.fs.starfarer.api.impl.campaign.world.NamelessRock;
024import com.fs.starfarer.api.impl.combat.threat.DisposableThreatFleetManager;
025import com.fs.starfarer.api.impl.combat.threat.DisposableThreatFleetManager.ThreatFleetCreationParams;
026import com.fs.starfarer.api.impl.combat.threat.ThreatFleetBehaviorScript;
027import com.fs.starfarer.api.util.Misc;
028import com.fs.starfarer.api.util.Misc.Token;
029
030/**
031 * 
032 */
033public class MiscCMD extends BaseCommandPlugin {
034
035        protected CampaignFleetAPI playerFleet;
036        protected SectorEntityToken entity;
037        protected TextPanelAPI text;
038        protected OptionPanelAPI options;
039        protected MemoryAPI memory;
040        protected InteractionDialogAPI dialog;
041        protected Map<String, MemoryAPI> memoryMap;
042
043        
044        public MiscCMD() {
045        }
046        
047        public MiscCMD(SectorEntityToken entity) {
048                init(entity);
049        }
050        
051        protected void init(SectorEntityToken entity) {
052                memory = entity.getMemoryWithoutUpdate();
053                this.entity = entity;
054                playerFleet = Global.getSector().getPlayerFleet();
055                
056                
057        }
058
059        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
060                this.dialog = dialog;
061                this.memoryMap = memoryMap;
062                
063                String command = params.get(0).getString(memoryMap);
064                if (command == null) return false;
065                
066                entity = dialog.getInteractionTarget();
067                init(entity);
068                
069                memory = getEntityMemory(memoryMap);
070                
071                text = dialog.getTextPanel();
072                options = dialog.getOptionPanel();
073                
074                if (command.equals("addCryosleeperIntel")) {
075                        if (CryosleeperIntel.getCryosleeperIntel(entity) == null) {
076                                new CryosleeperIntel(entity, dialog.getTextPanel());
077                        }
078                } else if (command.equals("addHypershuntIntel")) {
079                        if (HypershuntIntel.getHypershuntIntel(entity) == null) {
080                                new HypershuntIntel(entity, dialog.getTextPanel());
081                        }
082                } else if (command.equals("addWormholeIntel")) {
083                        addWormholeIntelIfNeeded(entity, dialog.getTextPanel(), true);
084                } else if (command.equals("addMarineXP")) {
085                        float amount = params.get(1).getFloat(memoryMap);
086                        PlayerFleetPersonnelTracker.getInstance().update();
087                        PlayerFleetPersonnelTracker.getInstance().getMarineData().addXP(amount);
088                } else if (command.equals("mk1_spawnThreatFleet")) {
089                        StarSystemAPI system = Global.getSector().getStarSystem(NamelessRock.NAMELESS_ROCK_LOCATION_ID);
090                        
091                        ThreatFleetCreationParams p = new ThreatFleetCreationParams();
092                        p.numHives = 1;
093                        p.numOverseers = 1;
094                        p.numDestroyers = 2;
095                        p.numFrigates = 4;
096                        p.fleetType = FleetTypes.PATROL_SMALL;
097                        
098                        CampaignFleetAPI fleet = DisposableThreatFleetManager.createThreatFleet(p, new Random());
099                        ThreatFleetBehaviorScript behavior = new ThreatFleetBehaviorScript(fleet, system);
100                        behavior.setSeenByPlayer();
101                        fleet.addScript(behavior);
102                        
103                        system.addEntity(fleet);
104                        float radius = 1000f + 500f * (float) Math.random();
105                        Vector2f loc = Misc.getPointAtRadius(playerFleet.getLocation(), radius);
106                        fleet.setLocation(loc.x, loc.y);
107                }
108                
109                return true;
110        }
111        
112        public static void addWormholeIntelIfNeeded(SectorEntityToken entity, TextPanelAPI textPanel, boolean deployed) {
113                if (WormholeIntel.getWormholeIntel(entity) == null) {
114                        new WormholeIntel(entity, textPanel, deployed);
115                }
116        }
117        
118}
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138