1package com.fs.starfarer.api.impl.campaign;
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.InteractionDialogAPI;
5import com.fs.starfarer.api.campaign.SectorEntityToken;
6import com.fs.starfarer.api.campaign.TextPanelAPI;
7import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
8import com.fs.starfarer.api.campaign.econ.MarketAPI;
9import com.fs.starfarer.api.impl.campaign.econ.CommRelayCondition;
10import com.fs.starfarer.api.impl.campaign.ids.Conditions;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.impl.campaign.ids.Tags;
13import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
14import com.fs.starfarer.api.impl.campaign.intel.misc.CommSnifferIntel;
15import com.fs.starfarer.api.ui.TooltipMakerAPI;
16import com.fs.starfarer.api.util.Misc;
20 public static interface CommSnifferReadableIntel {
21 boolean canMakeVisibleToCommSniffer(
boolean playerInRelayRange, SectorEntityToken relay);
25 public void init(SectorEntityToken
entity, Object pluginParams) {
26 super.init(
entity, pluginParams);
30 Object readResolve() {
35 if (
entity.getContainingLocation() ==
null ||
entity.isInHyperspace())
return;
37 if (
entity.getMemoryWithoutUpdate().getBoolean(MemFlags.OBJECTIVE_NON_FUNCTIONAL))
return;
40 for (MarketAPI market : Misc.getMarketsInLocation(
entity.getContainingLocation())) {
41 CommRelayCondition mc = CommRelayCondition.get(market);
43 market.addCondition(Conditions.COMM_RELAY);
44 mc = CommRelayCondition.get(market);
47 mc.getRelays().add(
entity);
51 checkIntelFromCommSniffer();
57 return entity.hasTag(Tags.MAKESHIFT);
62 if (
entity.getMemoryWithoutUpdate().getBoolean(MemFlags.OBJECTIVE_NON_FUNCTIONAL)) {
63 text.addPara(
"This one, however, is not connected to the Sector-wide network and is not emitting the hyperwave radiation typically indicative of relay operation. The cause of its lack of function is unknown.");
66 text.addPara(
"You have a comm sniffer running on this relay.");
78 int bonus = Math.abs(Math.round(
79 CommRelayCondition.COMM_RELAY_BONUS));
81 bonus = Math.abs(Math.round(
82 CommRelayCondition.MAKESHIFT_COMM_RELAY_BONUS));
84 text.addPara(BaseIntelPlugin.INDENT +
"%s stability for same-faction colonies in system",
85 pad, Misc.getHighlightColor(),
"+" + bonus);
95 int bonus = Math.abs(Math.round(
96 CommRelayCondition.COMM_RELAY_BONUS));
98 bonus = Math.abs(Math.round(
99 CommRelayCondition.MAKESHIFT_COMM_RELAY_BONUS));
103 text.addPara(
"%s stability for in-system colonies",
104 pad, Misc.getHighlightColor(),
"+" + bonus);
105 text.addPara(
"Comm sniffer installed", Misc.getTextColor(), pad);
107 text.addPara(
"%s stability for same-faction colonies in-system",
108 pad, Misc.getHighlightColor(),
"+" + bonus);
117 boolean found = CommSnifferIntel.getExistingSnifferIntelForRelay(
entity) !=
null;
119 CommSnifferIntel intel =
new CommSnifferIntel(
entity);
120 InteractionDialogAPI dialog =
Global.
getSector().getCampaignUI().getCurrentInteractionDialog();
121 if (dialog !=
null) {
122 Global.
getSector().getIntelManager().addIntelToTextPanel(intel, dialog.getTextPanel());
132 private void checkIntelFromCommSniffer() {
135 boolean playerInRelayRange =
Global.
getSector().getIntelManager().isPlayerInRangeOfCommRelay();
136 for (IntelInfoPlugin intel :
Global.getSector().getIntelManager().getCommQueue()) {
137 if (intel instanceof CommSnifferReadableIntel) {
138 CommSnifferReadableIntel csi = (CommSnifferReadableIntel) intel;
139 if (csi.canMakeVisibleToCommSniffer(playerInRelayRange,
entity)) {
140 intel.setForceAddNextFrame(
true);
static SectorAPI getSector()
void advance(float amount)
void printEffect(TooltipMakerAPI text, float pad)
void setHacked(boolean hacked)
void init(SectorEntityToken entity, Object pluginParams)
void addHackStatusToTooltip(TooltipMakerAPI text, float pad)
void printNonFunctionalAndHackDescription(TextPanelAPI text)