1package com.fs.starfarer.api.impl.campaign.abilities;
4import java.util.ArrayList;
5import java.util.Collections;
6import java.util.Comparator;
7import java.util.EnumSet;
10import com.fs.starfarer.api.EveryFrameScript;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.BattleAPI;
13import com.fs.starfarer.api.campaign.CampaignEngineLayers;
14import com.fs.starfarer.api.campaign.CampaignFleetAPI;
15import com.fs.starfarer.api.campaign.SectorEntityToken;
16import com.fs.starfarer.api.campaign.econ.MarketAPI;
17import com.fs.starfarer.api.characters.AbilityPlugin;
18import com.fs.starfarer.api.combat.ViewportAPI;
19import com.fs.starfarer.api.loading.AbilitySpecAPI;
20import com.fs.starfarer.api.ui.TooltipMakerAPI;
21import com.fs.starfarer.api.util.Misc;
32 protected transient AbilitySpecAPI
spec =
null;
44 Object writeReplace() {
66 if (fleet ==
null)
return;
68 for (AbilityPlugin curr : fleet.getAbilities().values()) {
69 if (curr ==
this)
continue;
78 if (fleet ==
null)
return;
80 for (AbilityPlugin curr : fleet.getAbilities().values()) {
81 if (curr ==
this)
continue;
89 for (String tag :
spec.getTags()) {
90 if (!
spec.isPositiveTag(tag) && !
spec.isNegativeTag(tag))
continue;
91 if (
spec.isPositiveTag(tag) && other.getSpec().hasTag(tag))
return false;
92 if (other.getSpec().hasOppositeTag(tag))
return false;
99 if (list.isEmpty())
return;
103 tooltip.addPara(pre, 10f);
106 for (AbilityPlugin curr : list) {
107 str +=
" " + curr.getSpec().getName() +
"\n";
109 str = str.substring(0, str.length() - 1);
110 Color c = Misc.getTooltipTitleAndLightHighlightColor();
113 tooltip.addPara(str, c, 3f);
115 Color c = Misc.getGrayColor();
116 tooltip.addPara(descShort, c, 10f);
121 List<AbilityPlugin> result =
new ArrayList<AbilityPlugin>();
122 CampaignFleetAPI fleet =
getFleet();
123 if (fleet ==
null)
return result;
125 for (AbilityPlugin curr : fleet.getAbilities().values()) {
126 if (curr ==
this)
continue;
135 Collections.sort(result,
new Comparator<AbilityPlugin>() {
136 public int compare(AbilityPlugin o1, AbilityPlugin o2) {
137 return o1.getSpec().getSortOrder() - o2.getSpec().getSortOrder();
145 return id +
"_ability_mod";
149 if (
entity instanceof CampaignFleetAPI) {
150 return (CampaignFleetAPI)
entity;
217 return spec.getIconName();
223 CampaignFleetAPI fleet =
getFleet();
224 if (fleet ==
null || !fleet.isPlayerFleet())
return;
230 CampaignFleetAPI fleet =
getFleet();
231 if (fleet ==
null || !fleet.isPlayerFleet())
return;
236 private static Color defaultCooldownColor =
new Color(0,0,0,171);
238 return defaultCooldownColor;
242 return entity.getFaction().getBrightUIColor();
246 return entity.getFaction().getBrightUIColor();
290 return Misc.ucFirst(
spec.getName().toLowerCase());
315 public void render(CampaignEngineLayers layer, ViewportAPI viewport) {
static SettingsAPI getSettings()
static SectorAPI getSector()
boolean showProgressIndicator()
SectorEntityToken getEntity()
void interruptIncompatible()
boolean isTooltipExpandable()
transient AbilitySpecAPI spec
String getDeactivationText()
boolean isCompatible(AbilityPlugin other)
String getActivationText()
void render(CampaignEngineLayers layer, ViewportAPI viewport)
float getLoopSoundUIVolume()
float getCooldownFraction()
void createTooltip(TooltipMakerAPI tooltip, boolean expanded)
void init(String id, SectorEntityToken entity)
boolean isActiveOrInProgress()
String getLoopSoundWorld()
void disableIncompatible()
float getLoopSoundWorldVolume()
float getLoopSoundUIPitch()
float getProgressFraction()
static boolean PLAY_UI_SOUNDS_IN_WORLD_SOURCES
void fleetLeftBattle(BattleAPI battle, boolean engagedInHostilities)
List< AbilityPlugin > getInterruptedList()
abstract float getCooldownLeft()
float getLoopSoundWorldPitch()
CampaignFleetAPI getFleet()
void addIncompatibleToTooltip(TooltipMakerAPI tooltip, String desc, String descShort, boolean expanded)
String getOffSoundWorld()
void fleetOpenedMarket(MarketAPI market)
void fleetJoinedBattle(BattleAPI battle)
boolean isCooldownRenderingAdditive()
boolean hasCustomButtonPressSounds()
void advance(float amount)
EnumSet< CampaignEngineLayers > getActiveLayers()
boolean showCooldownIndicator()
boolean showActiveIndicator()
abstract void setCooldownLeft(float days)
AbilitySpecAPI getAbilitySpec(String abilityId)