MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / CelestialMasterDatabase

Method CelestialMasterDatabase

source/game/StarCelestialDatabase.cpp:57–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55}
56
57CelestialMasterDatabase::CelestialMasterDatabase(Maybe<String> databaseFile) {
58 auto assets = Root::singleton().assets();
59
60 auto config = assets->json("/celestial.config");
61
62 m_baseInformation.planetOrbitalLevels = config.getInt("planetOrbitalLevels");
63 m_baseInformation.satelliteOrbitalLevels = config.getInt("satelliteOrbitalLevels");
64 m_baseInformation.chunkSize = config.getInt("chunkSize");
65 m_baseInformation.xyCoordRange = jsonToVec2I(config.get("xyCoordRange"));
66 m_baseInformation.zCoordRange = jsonToVec2I(config.get("zCoordRange"));
67
68 m_generationInformation.systemProbability = config.getFloat("systemProbability");
69 m_generationInformation.constellationProbability = config.getFloat("constellationProbability");
70 m_generationInformation.constellationLineCountRange = jsonToVec2U(config.get("constellationLineCountRange"));
71 m_generationInformation.constellationMaxTries = config.getUInt("constellationMaxTries");
72 m_generationInformation.maximumConstellationLineLength = config.getFloat("maximumConstellationLineLength");
73 m_generationInformation.minimumConstellationLineLength = config.getFloat("minimumConstellationLineLength");
74 m_generationInformation.minimumConstellationMagnitude = config.getFloat("minimumConstellationMagnitude");
75 m_generationInformation.minimumConstellationLineCloseness = config.getFloat("minimumConstellationLineCloseness");
76
77 // Copy construct into a Map<String, Json> in the parsing of the weighted
78 // pools to make sure that each WeightedPool is predictably populated based
79 // on key order.
80
81 for (auto const& systemPair : Map<String, Json>::from(config.getObject("systemTypes"))) {
82 SystemType systemType;
83 systemType.typeName = systemPair.first;
84 systemType.baseParameters = systemPair.second.get("baseParameters");
85 systemType.variationParameters = systemPair.second.getArray("variationParameters", JsonArray());
86 for (auto const& orbitRegion : systemPair.second.getArray("orbitRegions", JsonArray())) {
87 String regionName = orbitRegion.getString("regionName");
88 Vec2I orbitRange = jsonToVec2I(orbitRegion.get("orbitRange"));
89 float bodyProbability = orbitRegion.getFloat("bodyProbability");
90 WeightedPool<String> regionPlanetaryTypes = jsonToWeightedPool<String>(orbitRegion.get("planetaryTypes"));
91 WeightedPool<String> regionSatelliteTypes = jsonToWeightedPool<String>(orbitRegion.get("satelliteTypes"));
92 systemType.orbitRegions.append({regionName, orbitRange, bodyProbability, regionPlanetaryTypes, regionSatelliteTypes});
93 }
94 m_generationInformation.systemTypes.add(systemPair.first, systemType);
95 }
96
97 m_generationInformation.systemTypePerlin = PerlinD(config.getObject("systemTypePerlin"), staticRandomU64("SystemTypePerlin"));
98 m_generationInformation.systemTypeBins = config.get("systemTypeBins");
99
100 for (auto const& planetaryPair : Map<String, Json>::from(config.getObject("planetaryTypes"))) {
101 PlanetaryType planetaryType;
102 planetaryType.typeName = planetaryPair.first;
103 planetaryType.satelliteProbability = planetaryPair.second.getFloat("satelliteProbability");
104 planetaryType.maxSatelliteCount =
105 planetaryPair.second.getUInt("maxSatelliteCount", m_baseInformation.satelliteOrbitalLevels);
106 planetaryType.baseParameters = planetaryPair.second.get("baseParameters");
107 planetaryType.variationParameters = planetaryPair.second.getArray("variationParameters", JsonArray());
108 planetaryType.orbitParameters = planetaryPair.second.getObject("orbitParameters", JsonObject());
109 m_generationInformation.planetaryTypes[planetaryType.typeName] = planetaryType;
110 }
111
112 for (auto const& satellitePair : Map<String, Json>::from(config.getObject("satelliteTypes"))) {
113 SatelliteType satelliteType;
114 satelliteType.typeName = satellitePair.first;

Callers

nothing calls this directly

Calls 15

singletonClass · 0.85
jsonToVec2IFunction · 0.85
jsonToVec2UFunction · 0.85
staticRandomU64Function · 0.85
jsonToStringListFunction · 0.85
errorFunction · 0.85
strfFunction · 0.85
assetsMethod · 0.80
jsonMethod · 0.80
getIntMethod · 0.80
getFloatMethod · 0.80
getUIntMethod · 0.80

Tested by

no test coverage detected