001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.campaign.CampaignFleetAPI;
007import com.fs.starfarer.api.campaign.FactionAPI;
008import com.fs.starfarer.api.campaign.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.rules.MemoryAPI;
010import com.fs.starfarer.api.util.Misc.Token;
011
012/**
013 *      HailPlayer
014 *
015 *      Equivalent to:
016 *      AddText "You're being hailed by the $faction $otherShipOrFleet." $faction.baseColor
017 *      $hailing = true 0
018 *
019 *      The latter changes the "open comm link" text to a yellow "accept the comm request". 
020 *
021 * Copyright 2015 Fractal Softworks, LLC
022 */
023public class HailPlayer extends BaseCommandPlugin {
024
025        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
026
027                if (dialog == null) return false;
028                if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false;
029                
030                CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
031
032                String shipOrFleet = "ship";
033                if (fleet.getFleetData().getMembersListCopy().size() > 1) {
034                        shipOrFleet = "fleet";
035                }
036                FactionAPI faction = fleet.getFaction();
037                String factionName = faction.getEntityNamePrefix();
038                if (factionName == null || factionName.isEmpty()) {
039                        factionName = faction.getDisplayName();
040                }
041                
042                dialog.getTextPanel().addPara("You're being hailed by the " + factionName + " " + shipOrFleet + ".",
043                                                                          faction.getBaseUIColor());
044                
045                fleet.getMemoryWithoutUpdate().set("$hailing", true, 0);
046                
047                return true;
048        }
049
050}
051
052
053
054
055