1package com.fs.starfarer.api.impl.campaign.intel;
6import org.lwjgl.input.Keyboard;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.FactionAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.SectorEntityToken;
12import com.fs.starfarer.api.campaign.TextPanelAPI;
13import com.fs.starfarer.api.campaign.econ.EconomyAPI.EconomyUpdateListener;
14import com.fs.starfarer.api.campaign.econ.MarketAPI;
15import com.fs.starfarer.api.impl.campaign.ids.Conditions;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.impl.campaign.ids.Tags;
18import com.fs.starfarer.api.ui.ButtonAPI;
19import com.fs.starfarer.api.ui.IntelUIAPI;
20import com.fs.starfarer.api.ui.LabelAPI;
21import com.fs.starfarer.api.ui.SectorMapAPI;
22import com.fs.starfarer.api.ui.TooltipMakerAPI;
23import com.fs.starfarer.api.util.Misc;
27 public static enum AgreementEndingType {
53 public static String
KEY =
"$triTachDeal_ref";
63 protected AgreementEndingType
endType =
null;
71 TextPanelAPI text =
null;
72 if (dialog !=
null) text = dialog.getTextPanel();
108 return "Tri-Tachyon Strategic Partnership";
146 for (MarketAPI curr :
Global.
getSector().getEconomy().getMarketsCopy()) {
147 if (factionId.equals(curr.getFactionId())) {
148 if (curr.hasCondition(Conditions.DECIVILIZED))
continue;
149 size += curr.getSize();
165 Color h = Misc.getHighlightColor();
166 Color g = Misc.getGrayColor();
171 if (mode == ListInfoMode.IN_DESC) initPad = opad;
188 label = info.addPara(fName +
" colonies receive %s accessibility", initPad, tc, h,
"+" + accessPlayer +
"%");
189 label.setHighlight(fName,
"+" + accessPlayer +
"%");
190 label.setHighlightColors(Misc.getBasePlayerColor(), h);
193 fName =
faction.getDisplayName();
194 label = info.addPara(fName +
" colonies receive %s accessibility", initPad, tc, h,
"+" + accessTriTach +
"%");
195 label.setHighlight(fName,
"+" + accessTriTach +
"%");
196 label.setHighlightColors(
faction.getBaseUIColor(), h);
204 Color h = Misc.getHighlightColor();
205 Color g = Misc.getGrayColor();
206 Color tc = Misc.getTextColor();
210 info.addImage(
getFaction().getLogo(), width, 128, opad);
213 info.addPara(
"Your agreement with the Tri-Tachyon Corporation is no longer in force.", opad);
217 info.addPara(
"A partnership with the %s that allows you to leverage your combined market power "
218 +
"for mutual benefit.", opad,
faction.getBaseUIColor(),
faction.getDisplayNameLong());
222 info.addPara(
"Each partner's accessibility bonus is based "
223 +
"on the total size of the colonies of the other partner.", opad);
225 info.addPara(
"The contract is carefully worded to survive even in the face of open hostilities, and is, "
226 +
"from a legal perspective, perpetually binding.", opad);
228 info.addPara(
"You can of course decide to end this partnership unilaterally, but there "
229 +
"would be no possibility of re-negotiating a similar deal after displaying such a lack of respect "
230 +
"for your contractual obligations.", opad);
232 ButtonAPI button = info.addButton(
"End the partnership",
BUTTON_END,
234 (
int)(width), 20f, opad * 1f);
235 button.setShortcut(Keyboard.KEY_U,
true);
245 Set<String> tags = super.getIntelTags(map);
246 tags.add(Tags.INTEL_AGREEMENTS);
266 public void endAgreement(AgreementEndingType type, InteractionDialogAPI dialog) {
273 if (dialog !=
null) {
274 sendUpdate(
new Object(), dialog.getTextPanel());
277 if (type == AgreementEndingType.BROKEN) {
279 Misc.incrUntrustwortyCount();
280 TextPanelAPI text = dialog ==
null ? null : dialog.getTextPanel();
292 super.buttonPressConfirmed(buttonId, ui);
299 prompt.addPara(
"You can decide to end this partnership unilaterally, but taking this action would "
300 +
"hurt your standing with %s, and there "
301 +
"would be no possibility of re-negotiating a similar deal after displaying such a lack of respect "
302 +
"for your contractual obligations.", 0f,
313 return super.doesButtonHaveConfirmDialog(buttonId);
323 String descPlayer =
"Strategic partnership with " +
faction.getDisplayName();
324 String descTriTach =
"Strategic partnership with " +
Global.
getSector().getPlayerFaction().getDisplayName();
325 for (MarketAPI curr :
Global.
getSector().getEconomy().getMarketsCopy()) {
328 if (Factions.TRITACHYON.equals(curr.getFactionId())) {
331 }
else if (Factions.PLAYER.equals(curr.getFactionId())) {
336 curr.getAccessibilityMod().modifyFlat(
ACCESS_MOD_ID, mod, desc);
344 for (MarketAPI curr :
Global.
getSector().getEconomy().getMarketsCopy()) {
static SettingsAPI getSettings()
static SectorAPI getSector()
boolean isSendingUpdate()
void sendUpdate(Object listInfoParam, TextPanelAPI textPanel)
void unindent(TooltipMakerAPI info)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void setImportant(Boolean important)
void bullet(TooltipMakerAPI info)
static float MARKET_SIZE_TO_ACCESSIBILITY
void createConfirmationPrompt(Object buttonId, TooltipMakerAPI prompt)
void buttonPressConfirmed(Object buttonId, IntelUIAPI ui)
static boolean brokeDeal()
void endAgreement(AgreementEndingType type, InteractionDialogAPI dialog)
String getAcceptedPostfix()
String getBrokenPostfix()
SectorEntityToken getMapLocation(SectorMapAPI map)
static final String HAS_TRI_TACH_DEAL
static String UPDATE_PARAM_ACCEPTED
static float REP_FOR_BREAKING_DEAL
static final String BROKE_TRI_TACH_DEAL
void unapplyAccessModifier()
void createSmallDescription(TooltipMakerAPI info, float width, float height)
static String ACCESS_MOD_ID
float computeColonySize(String factionId)
TriTachyonDeal(InteractionDialogAPI dialog)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
Set< String > getIntelTags(SectorMapAPI map)
boolean doesButtonHaveConfirmDialog(Object buttonId)
float computeAccessibilityBonusTriTach()
String getImportantIcon()
String getSmallDescriptionTitle()
float computeAccessibilityBonusPlayer()
void commodityUpdated(String commodityId)
AgreementEndingType endType
static void setHasDeal(boolean deal)
static void setBrokeDeal(boolean broke)
FactionAPI getFactionForUIColors()
boolean isEconomyListenerExpired()
String getSpriteName(String category, String id)