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