Pin feature ordering to vanilla runtime
This commit is contained in:
parent
a73b689449
commit
e9fe526300
5 changed files with 264 additions and 1 deletions
|
|
@ -62,6 +62,7 @@ func depthRange(v any) (worldgen.ClimateRange, bool) {
|
|||
var (
|
||||
biomeTable *worldgen.ParameterTable
|
||||
biomeTableOnce sync.Once
|
||||
biomeOrder []string
|
||||
)
|
||||
|
||||
// loadBiomeTable parses the embedded biome parameters once and returns the full
|
||||
|
|
@ -76,18 +77,28 @@ func loadBiomeTable() *worldgen.ParameterTable {
|
|||
panic(fmt.Sprintf("world: parsing embedded biome_parameters.json: %v", err))
|
||||
}
|
||||
params := make([]worldgen.BiomeParameter, 0, len(raw.Biomes))
|
||||
seen := make(map[string]bool)
|
||||
for _, e := range raw.Biomes {
|
||||
dp, ok := depthRange(e.Param.Depth)
|
||||
if !ok {
|
||||
continue // malformed depth; skip defensively
|
||||
}
|
||||
params = append(params, makeBiomeParameter(e, dp))
|
||||
if !seen[e.Biome] {
|
||||
seen[e.Biome] = true
|
||||
biomeOrder = append(biomeOrder, e.Biome)
|
||||
}
|
||||
}
|
||||
biomeTable = worldgen.NewParameterTable(params)
|
||||
})
|
||||
return biomeTable
|
||||
}
|
||||
|
||||
func possibleBiomeOrder() []string {
|
||||
loadBiomeTable()
|
||||
return biomeOrder
|
||||
}
|
||||
|
||||
// makeBiomeParameter converts a raw JSON entry into a BiomeParameter, mapping
|
||||
// the [min,max] ranges to quantized ClimateRanges. depth is a ClimateRange
|
||||
// (exact range for scalar depths, explicit range for cave biomes).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue