Starsector API
Loading...
Searching...
No Matches
LightConditionGenerator.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 LightConditionGenerator 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 hab = context.starData.getHabZoneStart();
18
19 // want low-light conditions in neutron star systems
20// if (context.starData.getId().equals(StarTypes.NEUTRON_STAR)) {
21// hab = 0;
22// }
23
24 float normalIndex = hab + 4;
25 float veryIndex = hab + 8;
26 float eitherIndex = hab + 5;
27
28 boolean matchVery = orbitIndex >= veryIndex;
29 boolean matchNormal = !matchVery && orbitIndex >= normalIndex;
30 boolean matchEither = orbitIndex == eitherIndex;
31 if (matchEither) {
32 matchNormal = StarSystemGenerator.random.nextFloat() < 0.5f;
33 matchVery = !matchNormal;
34 }
35
36 boolean hasNormal = conditionsSoFar.contains(Conditions.POOR_LIGHT);
37 boolean hasVery = conditionsSoFar.contains(Conditions.DARK);
38
39
40 // if there's a baked-in "darkness" condition, don't downgrade it to "poor light"
41 if (matchNormal && !hasVery && !hasNormal &&
42 PlanetConditionGenerator.preconditionsMet(Conditions.POOR_LIGHT, conditionsSoFar)) {
43 conditionsSoFar.add(Conditions.POOR_LIGHT);
44 return;
45 }
46
47 // can, howeved, upgrade a "poor light" to a "darkness" provided preconditions are met
48 if (matchVery && !hasVery &&
49 PlanetConditionGenerator.preconditionsMet(Conditions.DARK, conditionsSoFar)) {
50 conditionsSoFar.remove(Conditions.POOR_LIGHT);
51 conditionsSoFar.add(Conditions.DARK);
52 return;
53 }
54 }
55
56}
void addConditions(Set< String > conditionsSoFar, GenContext context, PlanetAPI planet)
static boolean preconditionsMet(String conditionId, Set< String > conditionsSoFar)