1package com.fs.starfarer.api.impl.campaign.intel.bar.events;
6import org.apache.log4j.Logger;
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.CargoAPI.CargoItemType;
12import com.fs.starfarer.api.campaign.CargoStackAPI;
13import com.fs.starfarer.api.campaign.FactionAPI;
14import com.fs.starfarer.api.campaign.InteractionDialogAPI;
15import com.fs.starfarer.api.campaign.RepLevel;
16import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
17import com.fs.starfarer.api.campaign.SectorEntityToken;
18import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
19import com.fs.starfarer.api.campaign.econ.MarketAPI;
20import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
21import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
22import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.MissionCompletionRep;
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.DebugFlags;
26import com.fs.starfarer.api.impl.campaign.ids.Factions;
27import com.fs.starfarer.api.impl.campaign.ids.Tags;
28import com.fs.starfarer.api.impl.campaign.intel.BaseMissionIntel;
29import com.fs.starfarer.api.impl.campaign.intel.contacts.ContactIntel;
30import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
31import com.fs.starfarer.api.impl.campaign.shared.PlayerTradeDataForSubmarket;
32import com.fs.starfarer.api.impl.campaign.shared.SharedData;
33import com.fs.starfarer.api.ui.LabelAPI;
34import com.fs.starfarer.api.ui.SectorMapAPI;
35import com.fs.starfarer.api.ui.TooltipMakerAPI;
36import com.fs.starfarer.api.util.Misc;
54 Global.
getSector().getIntelManager().addIntel(
this,
false, dialog ==
null ?
null : dialog.getTextPanel());
122 CargoAPI cargo = playerFleet.getCargo();
129 AddRemoveCommodity.addCreditsGainText(
event.
getEscrow(), dialog.getTextPanel());
131 AddRemoveCommodity.addCreditsGainText(
event.
getReward(), dialog.getTextPanel());
133 float repAmount = 0.01f *
event.getReward() / 10000f;
134 if (repAmount < 0.01f) repAmount = 0.01f;
135 if (repAmount > 0.05f) repAmount = 0.05f;
137 MissionCompletionRep completionRep =
new MissionCompletionRep(repAmount, RepLevel.COOPERATIVE, -repAmount, RepLevel.INHOSPITABLE);
139 ReputationAdjustmentResult rep =
null;
141 new RepActionEnvelope(RepActions.MISSION_SUCCESS, completionRep,
142 null, dialog.getTextPanel(),
true,
true),
154 CargoAPI cargo = playerFleet.getCargo();
162 MarketAPI market =
event.getDestination();
166 SubmarketAPI submarket =
null;
167 for (SubmarketAPI curr : market.getSubmarketsCopy()) {
168 if (!curr.getPlugin().isParticipatesInEconomy())
continue;
170 if (illegal && curr.getPlugin().isBlackMarket()) {
174 if (!illegal && curr.getPlugin().isOpenMarket()) {
180 if (submarket ==
null)
return;
182 PlayerTradeDataForSubmarket tradeData = SharedData.getData().getPlayerActivityTracker().getPlayerTradeData(submarket);
185 tradeData.addToTrackedPlayerSold(stack, totalReward);
187 Misc.affectAvailabilityWithinReason(
getCommodity(),
event.getQuantity());
223 Color h = Misc.getHighlightColor();
224 Color g = Misc.getGrayColor();
229 if (mode == ListInfoMode.IN_DESC) initPad = opad;
243 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
248 null,
null, info, tc, isUpdate, 0f);
255 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
261 null,
null, info, tc, isUpdate, initPad);
265 if (mode != ListInfoMode.IN_DESC) {
266 info.addPara(
"Faction: " + faction.getDisplayName(), initPad, tc,
267 faction.getBaseUIColor(),
268 faction.getDisplayName());
276 info.addPara(
"%s reward", 0f, tc, h, Misc.getDGSCredits(
event.
getReward()));
278 info.addPara(
"%s held in escrow", 0f, tc, h, Misc.getDGSCredits(
event.
getEscrow()));
289 Color h = Misc.getHighlightColor();
290 Color g = Misc.getGrayColor();
295 info.addPara(
getName(), c, 0f);
306 return "Delivery - " +
getCommodity().getCommodity().getName();
314 return event.getFaction();
328 Color h = Misc.getHighlightColor();
329 Color g = Misc.getGrayColor();
330 Color tc = Misc.getTextColor();
341 MarketAPI market =
event.getDestination();
343 info.addImages(width, 80, opad, opad * 2f,
344 com.getCommodity().getIconName(),
346 market.getFaction().getCrest());
350 if (Factions.PIRATES.equals(faction.getId())) {
351 post =
"-affiliated";
355 String start =
"You've";
361 LabelAPI label = info.addPara(start +
" accepted " + faction.getPersonNamePrefixAOrAn() +
" " +
362 faction.getPersonNamePrefix() + post +
" contract to deliver a quantity of " +
363 com.getCommodity().getLowerCaseName() +
364 " from " +
event.
getMarket().getName() +
" to " + market.getName() +
", " +
365 "which is under " + market.getFaction().getPersonNamePrefix() +
" control.", opad,
366 faction.getBaseUIColor(), faction.getPersonNamePrefix() + post);
368 label.setHighlight(faction.getPersonNamePrefix() + post, market.getFaction().getPersonNamePrefix());
369 label.setHighlightColors(faction.getBaseUIColor(), market.getFaction().getBaseUIColor());
374 info.addPara(
"To make the delivery, either dock at " + market.getName() +
" openly or approach it without " +
375 "attracting the attention of nearby patrols.", opad);
387 if (
isFailed() && !market.isInEconomy()) {
388 info.addPara(
"You have failed this contract because " + market.getName() +
389 " no longer exists as a functional polity.", opad);
404 Set<String> tags = super.getIntelTags(map);
405 tags.add(Tags.INTEL_TRADE);
413 return event.getDestination().getPrimaryEntity();
427 float repAmount = 0.01f *
event.getReward() / 10000f;
428 if (repAmount < 0.01f) repAmount = 0.01f;
429 if (repAmount > 0.05f) repAmount = 0.05f;
431 MissionCompletionRep completionRep =
new MissionCompletionRep(repAmount, RepLevel.WELCOMING, -repAmount, RepLevel.INHOSPITABLE);
433 ReputationAdjustmentResult rep =
Global.
getSector().adjustPlayerReputation(
434 new RepActionEnvelope(RepActions.MISSION_FAILURE, completionRep,
435 null,
null,
true,
false),
438 return new MissionResult(0, rep,
null);
440 return new MissionResult();
454 return event.getDestination();
static FactoryAPI getFactory()
static Logger getLogger(Class c)
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)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void setImportant(Boolean important)
void bullet(TooltipMakerAPI info)
Color getTitleColor(ListInfoMode mode)
void addAcceptOrAbandonButton(TooltipMakerAPI info, float width)
String getPostfixForState()
void setMissionState(MissionState missionState)
MissionResult missionResult
void setDuration(Float duration)
void addGenericMissionState(TooltipMakerAPI info)
void setMissionResult(MissionResult missionResult)
static String KEY_FAILED_RECENTLY
MarketAPI getDestination()
static float FAILED_RECENTLY_DURATION
FactionAPI getFactionForUIColors()
MissionResult createAbandonedResult(boolean withPenalty)
Set< String > getIntelTags(SectorMapAPI map)
String getSmallDescriptionTitle()
SectorEntityToken getMapLocation(SectorMapAPI map)
CommodityOnMarketAPI getCommodity()
void applyTradeValueImpact(float totalReward)
boolean canAbandonWithoutPenalty()
MissionResult createTimeRanOutFailedResult()
static float PROB_CONSEQUENCES
static float PROB_CONSEQUENCES_ESCROW
void advanceMission(float amount)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
DeliveryBarEvent getEvent()
static float PROB_PIRATE_ENCOUNTER
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
MarketAPI getDestination()
DeliveryMissionIntel(DeliveryBarEvent event, InteractionDialogAPI dialog)
String getMissionTypeNoun()
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
void performDelivery(InteractionDialogAPI dialog)
CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo)