Starsector API
Loading...
Searching...
No Matches
BaseHistorianOfferWithLocation.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel.bar.events.historian;
2
3import java.util.Set;
4
5import java.awt.Color;
6
7import org.lwjgl.util.vector.Vector2f;
8
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.InteractionDialogAPI;
12import com.fs.starfarer.api.campaign.PlanetAPI;
13import com.fs.starfarer.api.campaign.SectorEntityToken;
14import com.fs.starfarer.api.campaign.listeners.ExtraSalvageShownListener;
15import com.fs.starfarer.api.combat.ShipHullSpecAPI;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
18import com.fs.starfarer.api.impl.campaign.ids.Tags;
19import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
20import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
21import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
22import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BaseSalvageSpecial;
23import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BreadcrumbSpecial;
24import com.fs.starfarer.api.ui.Alignment;
25import com.fs.starfarer.api.ui.SectorMapAPI;
26import com.fs.starfarer.api.ui.TooltipMakerAPI;
27import com.fs.starfarer.api.util.Misc;
28
30
31 private SectorEntityToken entity;
32
34 super();
35 this.entity = entity;
36 setImportant(true);
37 }
38
39 @Override
41 super.init(dialog);
42
43 setDone(true);
44 setRemove(true);
46
49
50 Misc.makeImportant(entity, getClass().getSimpleName());
51
52 CargoAPI cargo = Global.getFactory().createCargo(true);
53 addItemToCargo(cargo);
55 }
56
57
59 if (this.entity != entity) return;
60
61 Misc.makeUnimportant(entity, getClass().getSimpleName());
62 endIntel();
63 }
64
65 protected void endIntel() {
66 if (isEnding() || isEnded()) return;
67
71
72 if (Misc.random.nextFloat() < 0.5f) return;
73 if (this instanceof WeaponBlueprintOffer) return;
74 if (this instanceof FighterBlueprintOffer) return;
75
76 DelayedFleetEncounter e = new DelayedFleetEncounter(null, "hist");
77 e.setDelayNone();
78 //e.setEncounterInHyper();
80 e.beginCreate();
81 e.triggerCreateFleet(FleetSize.LARGE, FleetQuality.DEFAULT, Factions.LUDDIC_PATH, FleetTypes.PATROL_LARGE, new Vector2f());
82
83 float q = 0f;
84 if (this instanceof ShipBlueprintOffer) {
86 if (spec != null) {
87 q = Math.min(1f, (float)spec.getFleetPoints() / 20f);
88 }
89 } else if (this instanceof SpecialItemOffer) {
90 q = 1f;
91 }
92// else if (this instanceof WeaponBlueprintOffer) {
93// WeaponSpecAPI spec = Global.getSettings().getWeaponSpec(((WeaponBlueprintOffer)this).data);
94// if (spec != null) {
95// q = Math.min(0.5f, (float)spec.getOrdnancePointCost(null) / 40f);
96// }
97// } else if (this instanceof FighterBlueprintOffer) {
98// FighterWingSpecAPI spec = Global.getSettings().getFighterWingSpec(((FighterBlueprintOffer)this).data);
99// if (spec != null) {
100// q = Math.min(0.5f, (float)spec.getOpCost(null) / 40f);
101// }
102// }
103
106 e.triggerSetFleetGenericHailPermanent("HistorianPatherHail");
108 e.endCreate();
109 }
110
111
112 protected abstract void addItemToCargo(CargoAPI loot);
113 public abstract String getName();
114
115
116 protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode) {
117 }
118
119
120 @Override
121 public void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode) {
122 if (!entity.isAlive()) {
123 endIntel();
124 }
125
126 Color c = getTitleColor(mode);
127 info.addPara(getName(), c, 0f);
128
129 addBulletPoints(info, mode);
130 }
131
132
133 public String getSmallDescriptionTitle() {
134 return getName();
135 }
136
137
138 @Override
139 public void createSmallDescription(TooltipMakerAPI info, float width, float height) {
140 Color h = Misc.getHighlightColor();
141 Color g = Misc.getGrayColor();
142 //Color c = getTitleColor(mode);
143 Color tc = Misc.getTextColor();
144 float pad = 3f;
145 float opad = 10f;
146
148
149 info.addPara("The historian, " + hd.getPerson().getNameString() + ", has given you information about " +
150 "the location of a valuable item.", opad);
151
152 info.addSectionHeading("Item", Alignment.MID, opad);
153
154 CargoAPI cargo = Global.getFactory().createCargo(true);
155 addItemToCargo(cargo);
156 info.showCargo(cargo, 10, true, opad);
157
158 info.addSectionHeading("Location", Alignment.MID, opad);
159 if (isEnding()) {
160 info.addPara("You have recovered this item.", opad);
161 } else {
162 String located = BreadcrumbSpecial.getLocatedString(entity, true);
163 if (entity instanceof PlanetAPI) {
164 PlanetAPI planet = (PlanetAPI) entity;
165 info.addPara("The item is in the ruins found on a " +
166 planet.getTypeNameWithLowerCaseWorld().toLowerCase() + " " + located + ".", opad);
167
168 info.addPara("A full survey will need to be run before the ruins can be explored.", opad);
169
170 info.showFullSurveyReqs(planet, true, opad);
171
172 } else if (entity.getCustomEntitySpec() != null) {
173 info.addPara("The item is inside " + entity.getCustomEntitySpec().getAOrAn() + " " +
174 entity.getCustomEntitySpec().getNameInText() + " " + located + ".", opad);
175 } else {
176 info.addPara("The item inside a " + entity.getName() + " " + located + ".", opad);
177 }
178 }
179
180
181 }
182
183
184 public Set<String> getIntelTags(SectorMapAPI map) {
185 Set<String> tags = super.getIntelTags(map);
186 tags.add(Tags.INTEL_EXPLORATION);
187 tags.add(Tags.INTEL_ACCEPTED);
188 return tags;
189 }
190
191 @Override
193 if (entity != null && entity.isDiscoverable() && entity.getStarSystem() != null) {
194 return entity.getStarSystem().getCenter();
195 }
196 return entity;
197 }
198
199}
200
201
202
203
204
205
206
207
208
209
static SettingsAPI getSettings()
Definition Global.java:57
static FactoryAPI getFactory()
Definition Global.java:41
static SectorAPI getSector()
Definition Global.java:65
void setLocationAnywhere(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
static void addExtraSalvage(SectorEntityToken entity, CargoAPI cargo)
static Color getTextColor()
Definition Misc.java:839
static void makeImportant(SectorEntityToken entity, String reason)
Definition Misc.java:4051
static Color getGrayColor()
Definition Misc.java:826
static void makeUnimportant(SectorEntityToken entity, String reason)
Definition Misc.java:4077
static Color getHighlightColor()
Definition Misc.java:792
CargoAPI createCargo(boolean unlimitedStacks)
ShipHullSpecAPI getHullSpec(String hullId)
void addScript(EveryFrameScript script)
ListenerManagerAPI getListenerManager()
LabelAPI addPara(String format, float pad, Color hl, String... highlights)
LabelAPI addSectionHeading(String str, Alignment align, float pad)
void showFullSurveyReqs(PlanetAPI planet, boolean withText, float pad)
void showCargo(CargoAPI cargo, int max, boolean sort, float pad)