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}