1package com.fs.starfarer.api.impl.campaign.intel.bar.events;
5import java.util.Random;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CargoAPI;
9import com.fs.starfarer.api.campaign.InteractionDialogAPI;
10import com.fs.starfarer.api.campaign.OptionPanelAPI;
11import com.fs.starfarer.api.campaign.PersonImportance;
12import com.fs.starfarer.api.campaign.TextPanelAPI;
13import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
14import com.fs.starfarer.api.campaign.econ.MarketAPI;
15import com.fs.starfarer.api.campaign.rules.MemoryAPI;
16import com.fs.starfarer.api.characters.PersonAPI;
17import com.fs.starfarer.api.characters.FullName.Gender;
18import com.fs.starfarer.api.impl.campaign.ids.Commodities;
19import com.fs.starfarer.api.impl.campaign.ids.Ranks;
20import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
21import com.fs.starfarer.api.ui.LabelAPI;
22import com.fs.starfarer.api.util.Misc;
23import com.fs.starfarer.api.util.WeightedRandomPicker;
37 seed = Misc.random.nextLong();
45 if (this.market ==
market)
return;
62 if (unitPrice < 1 && unitPrice > 0) {
86 int size =
market.getSize();
95 return market.getFactionId();
101 return Ranks.CITIZEN;
105 String manOrWoman =
"man";
106 if (
person.getGender() == Gender.FEMALE) manOrWoman =
"woman";
111 String heOrShe =
"he";
112 if (
person.getGender() == Gender.FEMALE) {
119 String himOrHer =
"him";
120 if (
person.getGender() == Gender.FEMALE) {
127 String himOrHer =
"himself";
128 if (
person.getGender() == Gender.FEMALE) {
129 himOrHer =
"herself";
135 String hisOrHer =
"his";
136 if (
person.getGender() == Gender.FEMALE) {
207 Color h = Misc.getHighlightColor();
208 Color n = Misc.getNegativeHighlightColor();
220 cap = cargo.getFreeFuelSpace();
222 str +=
"Your fleet's fuel tanks can hold an additional %s units of fuel.";
224 str +=
"Your fleet's fuel tanks are currently full.";
226 }
else if (spec.isPersonnel()) {
227 cap = cargo.getFreeCrewSpace();
229 str +=
"Your fleet's crew quarters can accommodate an additional %s personnel.";
231 str +=
"Your fleet's crew berths are currently full.";
234 cap = (int) cargo.getSpaceLeft();
236 str +=
"Your fleet's holds can accommodate an additional %s units of cargo.";
238 str +=
"Your fleet's cargo holds are currently full.";
241 text.addPara(str, h, Misc.getWithDGS(cap));
244 float credits =
Global.
getSector().getPlayerFleet().getCargo().getCredits().get();
247 LabelAPI label =
text.addPara(
"The total price is %s. You have %s available.",
249 Misc.getDGSCredits(price),
250 Misc.getDGSCredits(credits));
251 label.setHighlightColors(
canAccept ? h : n, h);
252 label.setHighlight(Misc.getDGSCredits(price), Misc.getDGSCredits(credits));
262 if (tooltip !=
null) {
278 float credits =
Global.
getSector().getPlayerFleet().getCargo().getCredits().get();
280 boolean canAfford = credits >= price;
285 return "You don't have enough credits.";
301 if (price > 0) cargo.getCredits().subtract(price);
306 if (price > 0) AddRemoveCommodity.addCreditsLossText(price,
text);
329 if (acceptStr !=
null) {
335 text.addPara(acceptStr);
346 if (declineStr !=
null) {
352 text.addPara(declineStr);
379 WeightedRandomPicker<PersonImportance> picker =
new WeightedRandomPicker<PersonImportance>(
random);
380 picker.add(PersonImportance.VERY_LOW, 1f);
381 picker.add(PersonImportance.LOW, 5f);
382 picker.add(PersonImportance.MEDIUM, 10f);
383 picker.add(PersonImportance.HIGH, 5f);
384 picker.add(PersonImportance.VERY_HIGH, 1f);
385 return picker.pick();
388 WeightedRandomPicker<PersonImportance> picker =
new WeightedRandomPicker<PersonImportance>(
random);
389 picker.add(PersonImportance.LOW, 5f);
390 picker.add(PersonImportance.MEDIUM, 10f);
391 picker.add(PersonImportance.HIGH, 5f);
392 return picker.pick();
395 WeightedRandomPicker<PersonImportance> picker =
new WeightedRandomPicker<PersonImportance>(
random);
396 picker.add(PersonImportance.MEDIUM, 10f);
397 picker.add(PersonImportance.HIGH, 5f);
398 picker.add(PersonImportance.VERY_HIGH, 1f);
399 return picker.pick();
402 WeightedRandomPicker<PersonImportance> picker =
new WeightedRandomPicker<PersonImportance>(
random);
403 picker.add(PersonImportance.VERY_LOW, 10f);
404 picker.add(PersonImportance.LOW, 5f);
405 picker.add(PersonImportance.MEDIUM, 1f);
406 return picker.pick();
411 WeightedRandomPicker<String> picker =
new WeightedRandomPicker<String>(
random);
412 for (String option :
options) {
415 return picker.pick();
static SettingsAPI getSettings()
static SectorAPI getSector()
void notifyWasInteractedWith(PortsideBarEvent event)
static BarEventManager getInstance()
transient boolean noContinue
transient TextPanelAPI text
transient OptionPanelAPI options
transient Map< String, MemoryAPI > memoryMap
transient InteractionDialogAPI dialog
BaseGetCommodityBarEvent()
PersonImportance pickLowImportance()
void optionSelected(String optionText, Object optionData)
void init(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
Color[] getMainTextColors()
String[] getMainTextTokens()
void addPromptAndOption(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
void doConfirmActionsPreAcceptText()
abstract String getPrompt()
PersonImportance pickImportance()
void adjustPerson(PersonAPI person)
abstract String getCancelText()
PersonImportance pickMediumImportance()
void doStandardConfirmActions()
String[] getDeclineTextTokens()
String getCanNotAcceptTooltip()
String[] getMainText2Tokens()
String[] getAcceptTextTokens()
void showTotalAndOptions()
static final String OPTION_CONFIRM
boolean isDialogFinished()
PersonImportance pickHighImportance()
abstract String getConfirmText()
void regen(MarketAPI market)
Color[] getDeclineTextColors()
Color[] getMainText2Colors()
abstract String getOptionText()
void doExtraConfirmActions()
Color[] getAcceptTextColors()
static final String OPTION_CONTINUE
String pickOne(String ... options)
String getPersonFaction()
abstract String getMainText()
static final String OPTION_CANCEL
CommoditySpecAPI getCommoditySpec(String commodityId)