001package com.fs.starfarer.api.impl.campaign.rulecmd.missions; 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.CargoAPI; 009import com.fs.starfarer.api.campaign.FactionAPI; 010import com.fs.starfarer.api.campaign.InteractionDialogAPI; 011import com.fs.starfarer.api.campaign.OptionPanelAPI; 012import com.fs.starfarer.api.campaign.SectorEntityToken; 013import com.fs.starfarer.api.campaign.TextPanelAPI; 014import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin; 015import com.fs.starfarer.api.campaign.econ.MarketAPI; 016import com.fs.starfarer.api.campaign.rules.MemoryAPI; 017import com.fs.starfarer.api.impl.campaign.intel.bar.events.DeliveryMissionIntel; 018import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin; 019import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD; 020import com.fs.starfarer.api.util.Misc.Token; 021 022/** 023 * 024 */ 025public class DeliveryMission extends BaseCommandPlugin { 026 027 protected CampaignFleetAPI playerFleet; 028 protected SectorEntityToken entity; 029 protected FactionAPI playerFaction; 030 protected FactionAPI entityFaction; 031 protected TextPanelAPI text; 032 protected OptionPanelAPI options; 033 protected CargoAPI playerCargo; 034 protected MemoryAPI memory; 035 protected MarketAPI market; 036 protected InteractionDialogAPI dialog; 037 protected Map<String, MemoryAPI> memoryMap; 038 protected FactionAPI faction; 039 040 041 public DeliveryMission() { 042 043 } 044 045 protected void init(SectorEntityToken entity) { 046 memory = entity.getMemoryWithoutUpdate(); 047 this.entity = entity; 048 playerFleet = Global.getSector().getPlayerFleet(); 049 playerCargo = playerFleet.getCargo(); 050 051 playerFaction = Global.getSector().getPlayerFaction(); 052 entityFaction = entity.getFaction(); 053 054 faction = entity.getFaction(); 055 056 market = entity.getMarket(); 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("completeMissions")) { 075 completeMissions(); 076 } else if (command.equals("checkCompletion")) { 077 return checkCompletion(); 078 } 079 080 081 082 return true; 083 } 084 085 protected boolean checkCompletion() { 086 for (IntelInfoPlugin temp : Global.getSector().getIntelManager().getIntel(DeliveryMissionIntel.class)) { 087 DeliveryMissionIntel intel = (DeliveryMissionIntel) temp; 088 if (!intel.isAccepted()) continue; 089 if (intel.isEnding()) continue; 090 091 MarketAPI dest = intel.getDestination(); 092 if (dest != market) continue; 093 094 if (intel.hasEnough()) return true; 095 } 096 return false; 097 } 098 099 protected void completeMissions() { 100 dialog.getTextPanel().addPara("You contact the relevant parties and drop off the cargo at the agreed-upon dockside locations."); 101 102 for (IntelInfoPlugin temp : Global.getSector().getIntelManager().getIntel(DeliveryMissionIntel.class)) { 103 DeliveryMissionIntel intel = (DeliveryMissionIntel) temp; 104 if (!intel.isAccepted()) continue; 105 if (intel.isEnding()) continue; 106 107 MarketAPI dest = intel.getDestination(); 108 if (dest != market) continue; 109 110 if (intel.hasEnough()) { 111 intel.performDelivery(dialog); 112 } 113 } 114 115 options.clearOptions(); 116 options.addOption("Continue", MarketCMD.DEBT_RESULT_CONTINUE); 117 118 } 119 120 121} 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141