Starsector API
Loading...
Searching...
No Matches
GravityConditionGenerator.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 GravityConditionGenerator implements ConditionGenerator {
11
12 public void addConditions(Set<String> conditionsSoFar, GenContext context, PlanetAPI planet) {
13
14 if (conditionsSoFar.contains(Conditions.LOW_GRAVITY)) return;
15 if (conditionsSoFar.contains(Conditions.HIGH_GRAVITY)) return;
16
17 float radius = planet.getRadius();
18
20 float max = 250f;
21
22 if (radius < min) radius = min;
23 if (radius > max) radius = max;
24
25 if (radius < 100 && PlanetConditionGenerator.preconditionsMet(Conditions.LOW_GRAVITY, conditionsSoFar)) {
26 float range = 100 - min;
27 float chance = 0f;
28 if (range > 0) {
29 chance = 0.2f + 0.8f * ((100f - radius) / range);
30 }
31 if (StarSystemGenerator.random.nextFloat() < chance) {
32 conditionsSoFar.add(Conditions.LOW_GRAVITY);
33 }
34 return;
35 }
36
37 if (radius > 140 && PlanetConditionGenerator.preconditionsMet(Conditions.HIGH_GRAVITY, conditionsSoFar)) {
38 float range = max - 140;
39 float chance = 0f;
40 if (range > 0) {
41 chance = 0.1f + 0.9f * (1f - ((max - radius) / range));
42 }
43 if (StarSystemGenerator.random.nextFloat() < chance) {
44 conditionsSoFar.add(Conditions.HIGH_GRAVITY);
45 }
46 return;
47 }
48
49
50
51
52
53
54 }
55
56}
void addConditions(Set< String > conditionsSoFar, GenContext context, PlanetAPI planet)
static boolean preconditionsMet(String conditionId, Set< String > conditionsSoFar)