1package com.fs.starfarer.api.impl.campaign.procgen;
4import java.util.ArrayList;
5import java.util.Collections;
6import java.util.Comparator;
7import java.util.HashMap;
8import java.util.HashSet;
13import com.fs.starfarer.api.Global;
14import com.fs.starfarer.api.campaign.CampaignFleetAPI;
15import com.fs.starfarer.api.campaign.InteractionDialogAPI;
16import com.fs.starfarer.api.campaign.InteractionDialogPlugin;
17import com.fs.starfarer.api.campaign.OptionPanelAPI;
18import com.fs.starfarer.api.campaign.PlanetAPI;
19import com.fs.starfarer.api.campaign.StarSystemAPI;
20import com.fs.starfarer.api.campaign.TextPanelAPI;
21import com.fs.starfarer.api.campaign.VisualPanelAPI;
22import com.fs.starfarer.api.campaign.rules.MemoryAPI;
23import com.fs.starfarer.api.combat.EngagementResultAPI;
24import com.fs.starfarer.api.impl.campaign.ids.Conditions;
25import com.fs.starfarer.api.impl.campaign.ids.Planets;
26import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.CustomConstellationParams;
27import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.StarSystemType;
28import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantThemeGenerator;
29import com.fs.starfarer.api.impl.campaign.procgen.themes.ThemeGenContext;
30import com.fs.starfarer.api.util.Misc;
34 protected static enum OptionId {
82 if (optionData ==
null)
return;
84 OptionId option = (OptionId) optionData;
100 for (
int i = 0; i < genCount; i++) {
103 addText(
"Generated star system.");
107 for (
int i = 0; i < genCount; i++) {
110 addText(
"Generated star system.");
114 for (
int i = 0; i < genCount; i++) {
117 addText(
"Generated star system.");
122 Set<Constellation> c =
new HashSet<Constellation>();
124 if (system.getConstellation() ==
null)
continue;
126 if (curr.isProcgen()) {
127 c.add(system.getConstellation());
132 context.constellations =
new ArrayList<Constellation>(c);
137 CustomConstellationParams params =
new CustomConstellationParams(
StarAge.
YOUNG);
140 params.forceNebula =
true;
142 params.systemTypes.add(StarSystemType.TRINARY_2CLOSE);
143 params.systemTypes.add(StarSystemType.SINGLE);
144 params.systemTypes.add(StarSystemType.TRINARY_1CLOSE_1FAR);
145 params.systemTypes.add(StarSystemType.NEBULA);
146 params.systemTypes.add(StarSystemType.SINGLE);
147 params.systemTypes.add(StarSystemType.BINARY_CLOSE);
148 params.systemTypes.add(StarSystemType.BINARY_CLOSE);
151 params.starTypes.add(
"black_hole");
152 params.starTypes.add(
"star_blue_giant");
153 params.starTypes.add(
"star_orange");
156 params.starTypes.add(
"star_neutron");
157 params.starTypes.add(
"star_neutron");
158 params.starTypes.add(
"star_neutron");
159 params.starTypes.add(
"star_neutron");
160 params.starTypes.add(
"nebula_center_average");
161 params.starTypes.add(
"black_hole");
162 params.starTypes.add(
"black_hole");
163 params.starTypes.add(
"black_hole");
164 params.starTypes.add(
"star_blue_giant");
168 addText(
"Generated star system.");
190 final Map<String, Integer> counts =
new HashMap<String, Integer>();
191 final Map<String, Integer> hab =
new HashMap<String, Integer>();
193 int totalPlanets = 0;
194 int totalSystems = 0;
197 int totalPlanetsInSystemsWithTerran = 0;
198 int maxPlanetsInSystemsWithTerran = 0;
201 if (!system.isProcgen())
continue;
203 String starType =
null;
204 if (system.getStar() !=
null) {
205 starType = system.getStar().getSpec().getName();
211 Set<String> seen =
new HashSet<String>();
223 if (counts.containsKey(type)) {
224 count = counts.get(type);
227 counts.put(type, count);
232 if (starType !=
null) {
234 if (hab.containsKey(starType)) {
235 count = hab.get(starType);
238 hab.put(starType, count);
247 if (planets > maxPlanetsInSystemsWithTerran) {
248 maxPlanetsInSystemsWithTerran = planets;
250 totalPlanetsInSystemsWithTerran += planets;
254 List<String> list =
new ArrayList<String>(counts.keySet());
255 Collections.sort(list,
new Comparator<String>() {
256 public int compare(String o1, String o2) {
257 return counts.get(o2).compareTo(counts.get(o1));
260 List<String> habList =
new ArrayList<String>(hab.keySet());
261 Collections.sort(habList,
new Comparator<String>() {
262 public int compare(String o1, String o2) {
263 return hab.get(o2).compareTo(hab.get(o1));
268 print(String.format(
"Star systems: %4d", totalSystems));
269 print(String.format(
"Planets: %4d", totalPlanets));
270 print(String.format(
"Habitable %4d", totalHab));
271 print(String.format(
"Planets in systems with terran worlds: %4d", totalPlanetsInSystemsWithTerran));
272 print(String.format(
"Max planets in system with terran world: %4d", maxPlanetsInSystemsWithTerran));
273 if (totalPlanets > 0) {
274 print(
"Planet totals:");
275 for (String type : list) {
276 Integer count = counts.get(type);
278 value +=
" (" + count +
")";
279 print(String.format(
" %-20s%10s", type, value));
285 print(
"Habitable totals by star:");
286 for (String type : habList) {
287 Integer count = hab.get(type);
289 value +=
" (" + count +
")";
290 print(String.format(
" %-20s%10s", type, value));
298 System.out.println(str);
303 options.
addOption(
"Generate young constellation", OptionId.GEN_YOUNG,
null);
304 options.
addOption(
"Generate average constellation", OptionId.GEN_AVERAGE,
null);
306 options.
addOption(
"Generate preset constellation", OptionId.GEN_CUSTOM,
null);
333 String fleetOrShip =
"fleet";
335 fleetOrShip =
"ship";
337 fleetOrShip =
"fighter wing";
340 str = str.replaceAll(
"\\$fleetOrShip", fleetOrShip);
static SettingsAPI getSettings()
static SectorAPI getSector()
static final String HABITABLE
static final String PLANET_TERRAN
List< StarSystemAPI > getSystems()
InteractionDialogAPI dialog
Map< String, MemoryAPI > getMemoryMap()
void optionSelected(String text, Object optionData)
void appendText(String text)
void createInitialOptions()
void addText(String text)
static final Color HIGHLIGHT_COLOR
void backFromEngagement(EngagementResultAPI result)
String getString(String id)
OptionId lastOptionMousedOver
CampaignFleetAPI playerFleet
void init(InteractionDialogAPI dialog)
void advance(float amount)
void optionMousedOver(String optionText, Object optionData)
void generateForSector(ThemeGenContext context, float allowedUnusedFraction)
static String getRoundedValueMaxOneAfterDecimal(float value)
String getString(String category, String id)
Color getColor(String id)
FleetDataAPI getFleetData()
List< FleetMemberAPI > getMembersListCopy()
TextPanelAPI getTextPanel()
VisualPanelAPI getVisualPanel()
SectorEntityToken getInteractionTarget()
void addOptionSelectedText(Object optionId)
void setOptionOnEscape(String text, Object optionId)
OptionPanelAPI getOptionPanel()
void addOption(String text, Object data)
CampaignFleetAPI getPlayerFleet()
List< StarSystemAPI > getStarSystems()
Constellation getConstellation()
LabelAPI addParagraph(String text)
void appendToLastParagraph(String text)
void setVisualFade(float in, float out)
boolean isPlanetConditionMarketOnly()
boolean hasCondition(String id)