1package com.fs.starfarer.api.impl.campaign.intel.bar.events;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.FactionAPI;
12import com.fs.starfarer.api.campaign.InteractionDialogAPI;
13import com.fs.starfarer.api.campaign.RepLevel;
14import com.fs.starfarer.api.campaign.RuleBasedDialog;
15import com.fs.starfarer.api.campaign.SectorEntityToken;
16import com.fs.starfarer.api.campaign.TextPanelAPI;
17import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
18import com.fs.starfarer.api.campaign.econ.MarketAPI;
19import com.fs.starfarer.api.campaign.rules.MemoryAPI;
20import com.fs.starfarer.api.characters.PersonAPI;
21import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
22import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact;
23import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
24import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
25import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
26import com.fs.starfarer.api.impl.campaign.ids.Tags;
27import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
28import com.fs.starfarer.api.impl.campaign.intel.bar.events.BarEventManager.GenericBarEventCreator;
29import com.fs.starfarer.api.impl.campaign.intel.contacts.ContactIntel;
30import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
31import com.fs.starfarer.api.ui.SectorMapAPI;
32import com.fs.starfarer.api.ui.TooltipMakerAPI;
33import com.fs.starfarer.api.util.Misc;
34import com.fs.starfarer.api.util.Misc.Token;
59 market.getCommDirectory().addPerson(person);
62 person.getMemoryWithoutUpdate().set(
"$ttli_isPlayerContact",
true);
63 person.getMemoryWithoutUpdate().set(
"$ttli_eventRef",
this);
64 Misc.setFlagWithReason(person.getMemoryWithoutUpdate(),
65 MemFlags.MEMORY_KEY_MISSION_IMPORTANT,
84 getPerson().getMemoryWithoutUpdate().set(
"$ttli_isMajorLoan",
true);
91 return event.getPerson();
95 return event.getRepaymentDays();
99 public boolean callEvent(String ruleId,
final InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
100 String action = params.get(0).getString(memoryMap);
103 CargoAPI cargo = playerFleet.getCargo();
109 MemoryAPI memory =
getPerson().getMemoryWithoutUpdate();
110 if (action.equals(
"putValuesInMemory")) {
112 memory.set(
"$ttli_loanWasExtended",
wasExtended, 0);
117 }
else if (action.equals(
"canPay")) {
118 return cargo.getCredits().get() >=
event.getRepaymentAmount();
119 }
else if (action.equals(
"payLoan")) {
121 }
else if (action.equals(
"extendLoan")) {
123 }
else if (action.equals(
"applyExtendLoanRepLoss")) {
125 }
else if (action.equals(
"notPaying")) {
127 }
else if (action.equals(
"noPaymentMessage")) {
129 }
else if (action.equals(
"isMajorLoan")) {
137 dialog.getInteractionTarget().setActivePerson(
getPerson());
138 ((RuleBasedDialog) dialog.getPlugin()).notifyActivePersonChanged();
139 dialog.getVisualPanel().showPersonInfo(
getPerson(),
true);
144 super.notifyEnding();
147 market.getCommDirectory().removePerson(person);
148 market.removePerson(person);
149 person.getMemoryWithoutUpdate().unset(
"$ttli_isPlayerContact");
150 person.getMemoryWithoutUpdate().unset(
"$ttli_eventRef");
151 Misc.setFlagWithReason(person.getMemoryWithoutUpdate(),
152 MemFlags.MEMORY_KEY_MISSION_IMPORTANT,
165 float extension =
event.getRepaymentDays();
169 GenericBarEventCreator creator =
null;
180 if (creator !=
null) {
186 CustomRepImpact impact =
new CustomRepImpact();
187 impact.delta = -0.05f;
189 impact.limit = RepLevel.SUSPICIOUS;
191 new RepActionEnvelope(RepActions.CUSTOM,
192 impact,
null, dialog !=
null ? dialog.getTextPanel() :
null,
true,
true),
195 impact =
new CustomRepImpact();
196 impact.delta = -0.02f;
198 impact.limit = RepLevel.SUSPICIOUS;
200 new RepActionEnvelope(RepActions.CUSTOM,
201 impact,
null, dialog !=
null ? dialog.getTextPanel() :
null,
true,
true),
210 CargoAPI cargo = playerFleet.getCargo();
213 if (dialog !=
null) {
214 TextPanelAPI text = dialog.getTextPanel();
218 CustomRepImpact impact =
new CustomRepImpact();
219 impact.delta = 0.05f;
222 new RepActionEnvelope(RepActions.CUSTOM,
223 impact,
null, dialog !=
null ? dialog.getTextPanel() :
null,
true,
true),
226 impact =
new CustomRepImpact();
227 impact.delta = 0.02f;
230 new RepActionEnvelope(RepActions.CUSTOM,
231 impact,
null, dialog !=
null ? dialog.getTextPanel() :
null,
true,
true),
248 CustomRepImpact impact =
new CustomRepImpact();
250 impact.ensureAtBest = RepLevel.HOSTILE;
251 if (
isMajorLoan()) impact.ensureAtBest = RepLevel.VENGEFUL;
253 new RepActionEnvelope(RepActions.CUSTOM,
254 impact,
null, dialog !=
null ? dialog.getTextPanel() :
null, dialog !=
null, dialog !=
null),
257 if (dialog ==
null) {
258 Global.
getSector().getMemoryWithoutUpdate().set(
"$ttli_unpaidEventRef",
this, 60f);
269 super.advanceImpl(amount);
271 float days = Misc.getDays(amount);
283 float dist = Misc.getDistance(
Global.
getSector().getPlayerFleet().getLocationInHyperspace(),
market.getLocationInHyperspace());
284 float soonDays = dist / 1500 + 10f;
295 Color h = Misc.getHighlightColor();
296 Color g = Misc.getGrayColor();
301 if (mode == ListInfoMode.IN_DESC) initPad = opad;
310 if (mode == ListInfoMode.IN_DESC) {
311 info.addPara(
"%s original loan amount", initPad, tc, h, Misc.getDGSCredits(
event.
getLoanAmount()));
322 null,
null, info, tc, isUpdate, initPad);
331 info.addPara(
getName(), c, 0f);
342 return "Loan Repaid";
344 return "Loan Repayment - Failed";
346 return "Loan Repayment - Due Soon";
348 return "Loan Repayment";
354 return event.getPerson().getFaction();
364 Color h = Misc.getHighlightColor();
365 Color g = Misc.getGrayColor();
366 Color tc = Misc.getTextColor();
370 PersonAPI p =
event.getPerson();
372 info.addImages(width, 128, opad, opad, p.getPortraitSprite(), faction.getCrest());
375 info.addPara(
"You've repaid the loan from " + p.getNameString() +
" on time.", opad);
377 info.addPara(
"You've accepted a loan from " + p.getNameString() +
" and must repay it on time, " +
378 "or your reputation with " + faction.getDisplayNameWithArticle() +
" will be ruined.", opad,
379 faction.getBaseUIColor(), faction.getDisplayNameWithArticleWithoutArticle());
381 info.addPara(
"You've failed to repay the loan from " + p.getNameString() +
" on time.", opad);
387 info.addPara(
"You should be able to find " + p.getNameString() +
" at " +
market.getName() +
".", opad);
392 return event.getPerson().getPortraitSprite();
396 Set<String> tags = super.getIntelTags(map);
397 tags.add(Tags.INTEL_ACCEPTED);
404 return market.getPrimaryEntity();
static SectorAPI getSector()
static void addAdjustmentMessage(float delta, FactionAPI faction, PersonAPI person, TextPanelAPI panel, TooltipMakerAPI info, Color tc, boolean withCurrent, float pad)
void unindent(TooltipMakerAPI info)
void addDays(TooltipMakerAPI info, String after, float days)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void bullet(TooltipMakerAPI info)
Color getTitleColor(ListInfoMode mode)
TimeoutTracker< GenericBarEventCreator > getTimeout()
static BarEventManager getInstance()
List< GenericBarEventCreator > getCreators()
TriTachLoanIntel(TriTachLoanBarEvent event, MarketAPI market)
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
void extendLoan(InteractionDialogAPI dialog)
SectorEntityToken getMapLocation(SectorMapAPI map)
void noPaymentMessage(InteractionDialogAPI dialog)
TriTachLoanBarEvent event
FactionAPI getFactionForUIColors()
TriTachLoanBarEvent getEvent()
Set< String > getIntelTags(SectorMapAPI map)
boolean callEvent(String ruleId, final InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
ReputationAdjustmentResult repResult
void endWithPayment(InteractionDialogAPI dialog)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
String getSmallDescriptionTitle()
static final String NUM_REPAID_LOANS
void applyExtendLoanRepLoss(InteractionDialogAPI dialog)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
void setMajorLoan(boolean majorLoan)
void advanceImpl(float amount)
void endNoPayment(InteractionDialogAPI dialog)