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.CargoAPI; 009import com.fs.starfarer.api.campaign.InteractionDialogAPI; 010import com.fs.starfarer.api.campaign.OptionPanelAPI; 011import com.fs.starfarer.api.campaign.TextPanelAPI; 012import com.fs.starfarer.api.campaign.rules.MemKeys; 013import com.fs.starfarer.api.campaign.rules.MemoryAPI; 014import com.fs.starfarer.api.characters.PersonAPI; 015import com.fs.starfarer.api.combat.ShipVariantAPI; 016import com.fs.starfarer.api.fleet.FleetMemberAPI; 017import com.fs.starfarer.api.fleet.FleetMemberType; 018import com.fs.starfarer.api.impl.campaign.ids.People; 019import com.fs.starfarer.api.impl.campaign.intel.contacts.ContactIntel; 020import com.fs.starfarer.api.util.Misc.Token; 021 022/** 023 * For Tri-Tachyon (inc) Business (c) 024 * 025 * TT_CMD <action> <parameters> 026 */ 027public class TT_CMD extends BaseCommandPlugin { 028 029 protected String ARROYO = "arroyo"; 030 protected String SUN = "sun"; 031 protected String GLAMOR_ROTANEV = "glamor_rotanev"; 032 033 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 034 if (dialog == null) return false; 035 036 OptionPanelAPI options = dialog.getOptionPanel(); 037 TextPanelAPI text = dialog.getTextPanel(); 038 CampaignFleetAPI pf = Global.getSector().getPlayerFleet(); 039 CargoAPI cargo = pf.getCargo(); 040 041 String action = params.get(0).getString(memoryMap); 042 043 MemoryAPI memory = memoryMap.get(MemKeys.LOCAL); 044 if (memory == null) return false; // should not be possible unless there are other big problems already 045 046// MarketAPI market = dialog.getInteractionTarget().getMarket(); 047// StarSystemAPI system = null; 048// if (dialog.getInteractionTarget().getContainingLocation() instanceof StarSystemAPI) { 049// system = (StarSystemAPI) dialog.getInteractionTarget().getContainingLocation(); 050// } 051 052 if ("isArroyoContact".equals(action)) { 053 return isArroyoContact(); 054 } else if ("giveColossus".equals(action)) { 055 giveColossus(dialog, params, memoryMap); 056 return true; 057 } else if ("givePhaeton".equals(action)) { 058 givePhaeton(dialog, params, memoryMap); 059 return true; 060 } 061 062 return false; 063 } 064 065 protected void giveColossus(InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 066 ShipVariantAPI v = Global.getSettings().getVariant("colossus_Standard").clone(); 067 FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, v); 068 Global.getSector().getPlayerFleet().getFleetData().addFleetMember(member); 069 AddShip.addShipGainText(member, dialog.getTextPanel()); 070 071 } 072 073 protected void givePhaeton(InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 074 //System.out.print("givePhaeton called"); 075 ShipVariantAPI v = Global.getSettings().getVariant("phaeton_Standard").clone(); 076 FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, v); 077 Global.getSector().getPlayerFleet().getFleetData().addFleetMember(member); 078 AddShip.addShipGainText(member, dialog.getTextPanel()); 079 } 080 081 protected boolean isArroyoContact() { 082 PersonAPI person = People.getPerson(ARROYO); 083 boolean isContact = ContactIntel.playerHasContact(person, true); 084 //System.out.print("isArroyoContact? result: " +isContact ); 085 return isContact; 086 } 087 088}