Starsector API
Loading...
Searching...
No Matches
SectorThemeGenerator.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.procgen.themes;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
6import java.util.List;
7
8import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
9
11
12 public static List<ThemeGenerator> generators = new ArrayList<ThemeGenerator>();
13
14 static {
15 //generators.add(new SpecialThemeGenerator());
20 }
21
22 public static void generate(ThemeGenContext context) {
23 Collections.sort(generators, new Comparator<ThemeGenerator>() {
24 public int compare(ThemeGenerator o1, ThemeGenerator o2) {
25 int result = o1.getOrder() - o2.getOrder();
26 if (result == 0) return o1.getThemeId().compareTo(o2.getThemeId());
27 return result;
28 }
29 });
30
31 float totalWeight = 0f;
32 for (ThemeGenerator g : generators) {
33 totalWeight += g.getWeight();
34 g.setRandom(StarSystemGenerator.random);
35 }
36
37 for (ThemeGenerator g : generators) {
38 float w = g.getWeight();
39
40 float f = 0f;
41 if (totalWeight > 0) {
42 f = w / totalWeight;
43 } else {
44 if (w > 0) f = 1f;
45 }
46 //g.setRandom(StarSystemGenerator.random);
47 g.generateForSector(context, f);
48
49 //float used = context.majorThemes.size();
50 totalWeight -= w;
51
52 }
53 }
54
55
56
57
58}