Starsector API
Loading...
Searching...
No Matches
HotConditionGenerator.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.procgen;
2
3import java.util.Set;
4
5import com.fs.starfarer.api.campaign.PlanetAPI;
6import com.fs.starfarer.api.impl.campaign.ids.Conditions;
7import com.fs.starfarer.api.impl.campaign.procgen.PlanetConditionGenerator.ConditionGenerator;
8import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.GenContext;
9
10public class HotConditionGenerator implements ConditionGenerator {
11
12 public void addConditions(Set<String> conditionsSoFar, GenContext context, PlanetAPI planet) {
13
14 int orbitIndex = context.orbitIndex;
15 if (context.parent != null) orbitIndex = context.parentOrbitIndex;
16
17 float normalIndex = context.starData.getHabZoneStart() - 1;
18 float veryIndex = context.starData.getHabZoneStart() - 3;
19 float eitherIndex = context.starData.getHabZoneStart() - 2;
20
21 boolean matchVery = orbitIndex <= veryIndex;
22 boolean matchNormal = !matchVery && orbitIndex <= normalIndex;
23 boolean matchEither = orbitIndex == eitherIndex;
24 if (matchEither) {
25 matchNormal = StarSystemGenerator.random.nextFloat() < 0.5f;
26 matchVery = !matchNormal;
27 }
28
29 boolean hasNormal = conditionsSoFar.contains(Conditions.HOT);
30 boolean hasVery = conditionsSoFar.contains(Conditions.VERY_HOT);
31
32
33 // if there's a baked-in "very hot" condition, don't downgrade it to "hot"
34 if (matchNormal && !hasVery && !hasNormal &&
35 PlanetConditionGenerator.preconditionsMet(Conditions.HOT, conditionsSoFar)) {
36 conditionsSoFar.add(Conditions.HOT);
37 return;
38 }
39
40 // can, howeved, upgrade a "hot" to a "very hot" provided preconditions are met
41 // (i.e. can't upgrade a desert/arid/jungle to "very hot" because "very hot" requires not habitable)
42 if (matchVery && !hasVery &&
43 PlanetConditionGenerator.preconditionsMet(Conditions.VERY_HOT, conditionsSoFar)) {
44 conditionsSoFar.remove(Conditions.HOT);
45 conditionsSoFar.add(Conditions.VERY_HOT);
46 return;
47 }
48 }
49
50}
void addConditions(Set< String > conditionsSoFar, GenContext context, PlanetAPI planet)
static boolean preconditionsMet(String conditionId, Set< String > conditionsSoFar)