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

Method buildAsteroidsLayout

source/game/StarWorldLayout.cpp:240–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

238}
239
240WorldLayout WorldLayout::buildAsteroidsLayout(AsteroidsWorldParameters const& asteroidParameters, uint64_t seed) {
241 auto assets = Root::singleton().assets();
242
243 RandomSource randSource(seed);
244
245 auto asteroidsConfig = assets->json("/asteroids_worlds.config");
246 auto asteroidTerrainConfig = randSource.randFrom(asteroidsConfig.get("terrains").toArray());
247 auto emptyTerrainConfig = asteroidsConfig.get("emptyTerrain");
248
249 WorldLayout layout;
250 layout.m_worldSize = asteroidParameters.worldSize;
251
252 RegionParams asteroidRegion{
253 (int)asteroidParameters.worldSize[1] / 2,
254 asteroidParameters.threatLevel,
255 asteroidParameters.asteroidBiome,
256 asteroidTerrainConfig.getString("terrainSelector"),
257 asteroidTerrainConfig.getString("caveSelector"),
258 asteroidTerrainConfig.getString("bgCaveSelector"),
259 asteroidTerrainConfig.getString("oreSelector"),
260 asteroidTerrainConfig.getString("oreSelector"),
261 asteroidTerrainConfig.getString("subBlockSelector"),
262 {EmptyLiquidId, 0.0f, EmptyLiquidId, 0, false, false}
263 };
264
265 RegionParams emptyRegion{
266 (int)asteroidParameters.worldSize[1] / 2,
267 asteroidParameters.threatLevel,
268 asteroidParameters.asteroidBiome,
269 emptyTerrainConfig.getString("terrainSelector"),
270 emptyTerrainConfig.getString("caveSelector"),
271 emptyTerrainConfig.getString("bgCaveSelector"),
272 emptyTerrainConfig.getString("oreSelector"),
273 emptyTerrainConfig.getString("oreSelector"),
274 emptyTerrainConfig.getString("subBlockSelector"),
275 {EmptyLiquidId, 0.0f, EmptyLiquidId, 0, false, false}
276 };
277
278 layout.addLayer(seed, 0, emptyRegion);
279 layout.addLayer(seed, asteroidParameters.asteroidBottomLevel, asteroidRegion);
280 layout.addLayer(seed, asteroidParameters.asteroidTopLevel, emptyRegion);
281
282 layout.m_regionBlending = asteroidParameters.blendSize;
283 layout.m_blockNoise = asteroidsConfig.opt("blockNoise").apply(bind(&BlockNoise::build, _1, seed));
284
285 layout.m_playerStartSearchRegions.append(RectI(0, asteroidParameters.asteroidBottomLevel, asteroidParameters.worldSize[0], asteroidParameters.asteroidTopLevel));
286
287 layout.finalize(Color::Black);
288
289 return layout;
290}
291
292WorldLayout WorldLayout::buildFloatingDungeonLayout(FloatingDungeonWorldParameters const& floatingDungeonParameters, uint64_t seed) {
293 auto assets = Root::singleton().assets();

Callers

nothing calls this directly

Calls 11

singletonClass · 0.85
assetsMethod · 0.80
jsonMethod · 0.80
toArrayMethod · 0.80
getStringMethod · 0.80
addLayerMethod · 0.80
finalizeMethod · 0.80
getMethod · 0.45
applyMethod · 0.45
optMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected