Starsector API
Loading...
Searching...
No Matches
PiracyRespiteScript.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel.events;
2
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.comm.CommMessageAPI.MessageClickAction;
5import com.fs.starfarer.api.campaign.econ.EconomyAPI.EconomyUpdateListener;
6import com.fs.starfarer.api.campaign.econ.MarketAPI;
7import com.fs.starfarer.api.impl.campaign.econ.PiracyRespite;
8import com.fs.starfarer.api.impl.campaign.ids.Conditions;
9import com.fs.starfarer.api.impl.campaign.ids.Sounds;
10import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
11import com.fs.starfarer.api.impl.campaign.intel.MessageIntel;
12import com.fs.starfarer.api.util.Misc;
13
14public class PiracyRespiteScript implements EconomyUpdateListener {
15
16 public static String KEY = "$prs_ref";
17
18 //public static float DURATION = 730;
19 public static float DURATION = -1f;
20
21 public static PiracyRespiteScript get() {
22 //if (true) return null;
24 }
25
26 public static boolean playerHasPiracyRespite() {
27 return get() != null;
28 }
29
30
31 protected long timestamp;
32
35
36 // to avoid duplicates
37 PiracyRespiteScript existing = get();
38 if (existing != null) {
39 existing.resetTimestamp();
40 return;
41 }
42
46
48 }
49
50 public void sendGainedMessage() {
51 MessageIntel msg = new MessageIntel();
52 msg.addLine("Piracy Respite gained", Misc.getBasePlayerColor());
54 msg.addLine(BaseIntelPlugin.BULLET + "Colonies receive %s accessibility", Misc.getTextColor(),
55 new String [] {"+" + (int)Math.round(PiracyRespite.ACCESSIBILITY_BONUS * 100f) + "%"},
57 if (DURATION > 0) {
58 msg.addLine(BaseIntelPlugin.BULLET + "Lasts for %s days", Misc.getTextColor(),
59 new String [] {"" + (int)PiracyRespiteScript.DURATION},
61 }
62 } else {
63 msg.addLine(BaseIntelPlugin.BULLET + "Reduced shipping disruptions", Misc.getTextColor());
64 }
65 msg.setIcon(Global.getSettings().getSpriteName("events", "piracy_respite"));
67 Global.getSector().getCampaignUI().addMessage(msg, MessageClickAction.COLONY_INFO);
68 }
69
70 public void sendExpiredMessage() {
71 MessageIntel msg = new MessageIntel();
72 msg.addLine("Piracy Respite expired", Misc.getBasePlayerColor());
73 msg.setIcon(Global.getSettings().getSpriteName("events", "piracy_respite"));
75 Global.getSector().getCampaignUI().addMessage(msg, MessageClickAction.COLONY_INFO);
76 }
77
81
82 public float getDaysRemaining() {
83 if (DURATION < 0) return DURATION;
85 //rem = 1f - Global.getSector().getClock().getElapsedDaysSince(timestamp);
86 if (rem < 0) rem = 0;
87 return rem;
88 }
89
90 public void commodityUpdated(String commodityId) {
91
92 }
93
94 public void economyUpdated() {
95 //for (MarketAPI curr : Misc.getPlayerMarkets(false)) {
97 if (curr.isPlayerOwned() && curr.getFaction() != null && curr.getFaction().isPlayerFaction()) {
98 if (!curr.hasCondition(Conditions.PIRACY_RESPITE)) {
99 curr.addCondition(Conditions.PIRACY_RESPITE);
100 }
101 } else {
102 if (curr.hasCondition(Conditions.PIRACY_RESPITE)) {
103 curr.removeCondition(Conditions.PIRACY_RESPITE);
104 }
105 }
106 }
107 }
108
109 public void cleanup() {
112 }
114 //for (MarketAPI curr : Misc.getPlayerMarkets(false)) {
116 if (curr.hasCondition(Conditions.PIRACY_RESPITE)) {
117 curr.removeCondition(Conditions.PIRACY_RESPITE);
118 }
119 }
120 }
121
122 public boolean isEconomyListenerExpired() {
123 if (DURATION < 0) return false;
124
125 float days = getDaysRemaining();
126 if (days <= 0) {
127 cleanup();
128 return true;
129 }
130 return false;
131 }
132
133}
134
135
136
static SettingsAPI getSettings()
Definition Global.java:57
static SectorAPI getSector()
Definition Global.java:65
static Color getTextColor()
Definition Misc.java:839
static Color getBasePlayerColor()
Definition Misc.java:833
static Color getHighlightColor()
Definition Misc.java:792
String getSpriteName(String category, String id)
void addUpdateListener(EconomyUpdateListener listener)
void set(String key, Object value)