001package com.fs.starfarer.api.impl.campaign.intel.events; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.comm.CommMessageAPI.MessageClickAction; 005import com.fs.starfarer.api.campaign.econ.EconomyAPI.EconomyUpdateListener; 006import com.fs.starfarer.api.campaign.econ.MarketAPI; 007import com.fs.starfarer.api.impl.campaign.econ.PiracyRespite; 008import com.fs.starfarer.api.impl.campaign.ids.Conditions; 009import com.fs.starfarer.api.impl.campaign.ids.Sounds; 010import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin; 011import com.fs.starfarer.api.impl.campaign.intel.MessageIntel; 012import com.fs.starfarer.api.impl.campaign.intel.PerseanLeagueMembership; 013import com.fs.starfarer.api.util.Misc; 014 015public class EstablishedPolityScript implements EconomyUpdateListener { 016 017 public static String KEY = "$eps_ref"; 018 019 public static EstablishedPolityScript get() { 020 return (EstablishedPolityScript) Global.getSector().getMemoryWithoutUpdate().get(KEY); 021 } 022 023 024 protected long timestamp; 025 026 public EstablishedPolityScript() { 027 028 sendGainedMessage(); 029 030 // to avoid duplicates 031 EstablishedPolityScript existing = get(); 032 if (existing != null) { 033 return; 034 } 035 036 Global.getSector().getEconomy().addUpdateListener(this); 037 Global.getSector().getMemoryWithoutUpdate().set(KEY, this); 038 039 economyUpdated(); 040 } 041 042 public void sendGainedMessage() { 043 MessageIntel msg = new MessageIntel(); 044 msg.addLine("Established Polity gained", Misc.getBasePlayerColor()); 045 msg.addLine(BaseIntelPlugin.BULLET + "Colonies receive %s accessibility", Misc.getTextColor(), 046 new String [] {"+" + (int)Math.round(PiracyRespite.ACCESSIBILITY_BONUS * 100f) + "%"}, 047 Misc.getHighlightColor()); 048 msg.setIcon(Global.getSettings().getSpriteName("events", "established_polity")); 049 msg.setSound(Sounds.REP_GAIN); 050 Global.getSector().getCampaignUI().addMessage(msg, MessageClickAction.COLONY_INFO); 051 } 052 053 public void commodityUpdated(String commodityId) { 054 055 } 056 057 public void economyUpdated() { 058 //for (MarketAPI curr : Misc.getPlayerMarkets(false)) { 059 for (MarketAPI curr : Global.getSector().getEconomy().getMarketsCopy()) { 060 if (curr.isPlayerOwned() && curr.getFaction() != null && curr.getFaction().isPlayerFaction()) { 061 if (!curr.hasCondition(Conditions.ESTABLISHED_POLITY)) { 062 curr.addCondition(Conditions.ESTABLISHED_POLITY); 063 } 064 } else { 065 if (curr.hasCondition(Conditions.ESTABLISHED_POLITY)) { 066 curr.removeCondition(Conditions.ESTABLISHED_POLITY); 067 } 068 } 069 } 070 } 071 072 public void cleanup() { 073 Global.getSector().getMemoryWithoutUpdate().unset(KEY); 074 //for (MarketAPI curr : Misc.getPlayerMarkets(false)) { 075 for (MarketAPI curr : Global.getSector().getEconomy().getMarketsCopy()) { 076 if (curr.hasCondition(Conditions.ESTABLISHED_POLITY)) { 077 curr.removeCondition(Conditions.ESTABLISHED_POLITY); 078 } 079 } 080 } 081 082 public boolean isEconomyListenerExpired() { 083 if (!PerseanLeagueMembership.isDefeatedBlockadeOrPunEx() && !PerseanLeagueMembership.isLeagueMember()) { 084 cleanup(); 085 return true; 086 } 087 return false; 088 } 089 090} 091 092 093