Starsector API
Loading...
Searching...
No Matches
PirateBaseRumorBarEvent.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel.bar.events;
2
3import java.util.Map;
4import java.util.Random;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.InteractionDialogAPI;
8import com.fs.starfarer.api.campaign.PersonImportance;
9import com.fs.starfarer.api.campaign.TextPanelAPI;
10import com.fs.starfarer.api.campaign.econ.MarketAPI;
11import com.fs.starfarer.api.campaign.rules.MemoryAPI;
12import com.fs.starfarer.api.characters.FullName.Gender;
13import com.fs.starfarer.api.characters.PersonAPI;
14import com.fs.starfarer.api.impl.campaign.ids.Factions;
15import com.fs.starfarer.api.impl.campaign.ids.Ranks;
16import com.fs.starfarer.api.impl.campaign.ids.Tags;
17import com.fs.starfarer.api.impl.campaign.intel.bar.PortsideBarData;
18import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel;
19import com.fs.starfarer.api.impl.campaign.intel.contacts.ContactIntel;
20import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel;
21import com.fs.starfarer.api.impl.campaign.intel.events.PirateBasePirateActivityCause2;
22import com.fs.starfarer.api.util.Misc;
23
25 protected PirateBaseIntel intel;
26 protected long seed;
27
28 public boolean isAlwaysShow() {
29 return true;
30 }
31
32 public PirateBaseRumorBarEvent(PirateBaseIntel intel) {
33 this.intel = intel;
34 seed = Misc.random.nextLong();
35 }
36
37 public boolean shouldShowAtMarket(MarketAPI market) {
38 if (intel.getTarget() == market.getContainingLocation()) {
39 return true;
40 }
41 if (market.isPlayerOwned()) {
42 HostileActivityEventIntel ha = HostileActivityEventIntel.get();
43 if (ha != null) {
44 return PirateBasePirateActivityCause2.getBaseIntel(market.getStarSystem()) == intel;
45 }
46// HostileActivityIntel hai = HostileActivityIntel.get(market.getStarSystem());
47// if (hai != null) {
48// PirateBasePirateActivityCause cause = (PirateBasePirateActivityCause)hai.getActivityCause(
49// PirateHostileActivityPluginImpl.class, PirateBasePirateActivityCause.class);
50// if (cause != null) {
51// return cause.getBaseIntel() == intel;
52// }
53// }
54 }
55 return false;
56 }
57
58 @Override
59 public boolean shouldRemoveEvent() {
60 return intel.isEnding() || intel.isEnded() || intel.isPlayerVisible();
61 }
62
63
64 transient protected boolean done = false;
65 transient protected Gender gender;
66 transient protected PersonAPI person;
67
68 @Override
69 public void addPromptAndOption(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
70 super.addPromptAndOption(dialog, memoryMap);
71
72 Random random = new Random(seed + dialog.getInteractionTarget().getMarket().getId().hashCode());
73
74 gender = Gender.MALE;
75 if (random.nextFloat() > 0.5f) {
76 gender = Gender.FEMALE;
77 }
78 person = Global.getSector().getFaction(Factions.PIRATES).createRandomPerson(gender, random);
79 person.setPostId(Ranks.POST_MINORCRIMINAL);
80 person.setImportanceAndVoice(PersonImportance.VERY_LOW, random);
81 person.addTag(Tags.CONTACT_UNDERWORLD);
82
83 String himOrHer = "him";
84 if (gender == Gender.FEMALE) himOrHer = "her";
85
86 TextPanelAPI text = dialog.getTextPanel();
87 text.addPara("A grizzled spacer sits at the bar, downing shots " +
88 "of what looks like the cheapest liquor available.");
89
90 dialog.getOptionPanel().addOption(
91 "Approach the spacer and offer to buy " + himOrHer + " something more palatable",
92 this);
93 }
94
95 @Override
96 public void init(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
97 super.init(dialog, memoryMap);
98
99 String himOrHerSelf = "himself";
100 if (gender == Gender.FEMALE) himOrHerSelf = "herself";
101
102 TextPanelAPI text = dialog.getTextPanel();
103 text.addPara("You keep the drinks flowing and mostly just listen, " +
104 "letting the spacer unburden " + himOrHerSelf + ".");
105
106 //PersonAPI person = Global.getSector().getFaction(Factions.PIRATES).createRandomPerson(gender);
107 dialog.getVisualPanel().showPersonInfo(person, true);
108
109 done = true;
110 intel.makeKnown();
111 intel.sendUpdate(PirateBaseIntel.DISCOVERED_PARAM, text);
112
114
115 ContactIntel.addPotentialContact(person, dialog.getInteractionTarget().getMarket(), text);
116 }
117
118
119 @Override
120 public void optionSelected(String optionText, Object optionData) {
121 }
122
123 @Override
124 public boolean isDialogFinished() {
125 return done;
126 }
127
128
129 protected boolean showCargoCap() {
130 return false;
131 }
132}
133
134
135
static SectorAPI getSector()
Definition Global.java:59
void init(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
void addPromptAndOption(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)