001package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
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.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.OptionPanelAPI;
010import com.fs.starfarer.api.campaign.SectorEntityToken;
011import com.fs.starfarer.api.campaign.TextPanelAPI;
012import com.fs.starfarer.api.campaign.rules.MemoryAPI;
013import com.fs.starfarer.api.fleet.FleetMemberAPI;
014import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
015import com.fs.starfarer.api.impl.campaign.missions.academy.GAPZPostEncounters;
016import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
017import com.fs.starfarer.api.util.Misc;
018import com.fs.starfarer.api.util.Misc.Token;
019
020/**
021 * 
022 */
023public class ZigguratCMD extends BaseCommandPlugin {
024
025        protected CampaignFleetAPI playerFleet;
026        protected SectorEntityToken entity;
027        protected TextPanelAPI text;
028        protected OptionPanelAPI options;
029        protected MemoryAPI memory;
030        protected InteractionDialogAPI dialog;
031        protected Map<String, MemoryAPI> memoryMap;
032
033        
034        public ZigguratCMD() {
035        }
036        
037        public ZigguratCMD(SectorEntityToken entity) {
038                init(entity);
039        }
040        
041        protected void init(SectorEntityToken entity) {
042                memory = entity.getMemoryWithoutUpdate();
043                this.entity = entity;
044                playerFleet = Global.getSector().getPlayerFleet();
045                
046                
047        }
048
049        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
050                this.dialog = dialog;
051                this.memoryMap = memoryMap;
052                
053                String command = params.get(0).getString(memoryMap);
054                if (command == null) return false;
055                
056                entity = dialog.getInteractionTarget();
057                init(entity);
058                
059                memory = getEntityMemory(memoryMap);
060                
061                text = dialog.getTextPanel();
062                options = dialog.getOptionPanel();
063                
064                if (command.equals("initEncounters")) {
065                        initEncounters();       
066                } else if (command.equals("createSecondDiktatEncounter")) {
067                        createSecondDiktatEncounter();  
068                } else if (command.equals("abortSecondDiktatEncounter")) {
069                        abortSecondDiktatEncounter();   
070                } else if (command.equals("updateData")) {
071                        updateData();
072                }
073                
074                return true;
075        }
076        
077        protected void updateData() {
078                boolean hasZiggurat = false;
079                boolean hasNonZiggurat = false;
080                for (FleetMemberAPI member : playerFleet.getFleetData().getMembersListCopy()) {
081                        if (member.getHullSpec().getBaseHullId().equals("ziggurat")) {
082                                memory.set("$zigguratShipName", member.getShipName(), 0f);
083                                memory.set("$zigguratMember", member, 0f);
084                                hasZiggurat = true;
085                        } else {
086                                hasNonZiggurat = true;
087                        }
088                }
089                memory.set("$hasZiggurat", hasZiggurat, 0f);
090                memory.set("$hasNonZiggurat", hasNonZiggurat, 0f);
091                memory.set("$hasOnlyZiggurat", hasZiggurat && !hasNonZiggurat, 0f);
092                
093                memory.set("$ttZigBuyPrice", Misc.getWithDGS(2000000), 0f);
094                memory.set("$ttZigLowBuyPrice", Misc.getWithDGS(100000), 0f);
095        }
096
097        protected void initEncounters() {
098                GAPZPostEncounters.init();
099        }
100        
101        protected void createSecondDiktatEncounter() {
102                DelayedFleetEncounter e = GAPZPostEncounters.createSecondDiktatEncounter();
103                memory.set("$gaPZ_secondDiktatEncounter", e, 0);
104        }
105        
106        protected void abortSecondDiktatEncounter() {
107                DelayedFleetEncounter e = (DelayedFleetEncounter)memory.get("$gaPZ_secondDiktatEncounter");
108                if (e != null) {
109                        e.setAlwaysAbort();
110                }
111        }
112        
113}
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133