#pragma once #include "StarBiomePlacement.hpp" #include "StarSpawner.hpp" namespace Star { STAR_STRUCT(AmbientNoisesDescription); STAR_CLASS(Parallax); STAR_STRUCT(BiomePlaceables); STAR_STRUCT(Biome); struct BiomePlaceables { BiomePlaceables(); explicit BiomePlaceables(Json const& json); Json toJson() const; // If any of the item distributions contain trees, this returns the first // tree type. Maybe firstTreeType() const; ModId grassMod; float grassModDensity; ModId ceilingGrassMod; float ceilingGrassModDensity; List itemDistributions; }; struct Biome { Biome(); explicit Biome(Json const& store); Json toJson() const; String baseName; String description; MaterialId mainBlock; List subBlocks; // Pairs the ore type with the commonality multiplier. List> ores; float hueShift; MaterialHue materialHueShift; BiomePlaceables surfacePlaceables; BiomePlaceables undergroundPlaceables; SpawnProfile spawnProfile; ParallaxPtr parallax; AmbientNoisesDescriptionPtr ambientNoises; AmbientNoisesDescriptionPtr musicTrack; }; }