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