37 lines
1.5 KiB
Lua
37 lines
1.5 KiB
Lua
|
local biome_lookup = {};
|
||
|
|
||
|
return {
|
||
|
-- Register a biome with textures to display
|
||
|
-- name: A string containing the biome name
|
||
|
-- textures: A table of texture names.
|
||
|
-- These should correspond with detail levels,
|
||
|
-- any detail level past the length of the table will return the last texture
|
||
|
-- (Optional) min_height: The minimum Y position where this biome data should be used
|
||
|
-- (Optional) max_height: The maximum Y position where this biome data should be used
|
||
|
add = function (name, textures, min_height, max_height)
|
||
|
biome_lookup[#biome_lookup + 1] = {
|
||
|
name = name,
|
||
|
textures = textures,
|
||
|
min_height = min_height,
|
||
|
max_height = max_height,
|
||
|
};
|
||
|
end,
|
||
|
|
||
|
-- Get the texture name (minus index/extension) for the given biome, height, and detail level.
|
||
|
-- name: A string containing the biome name
|
||
|
-- height: A number representing the Y position of the biome
|
||
|
-- detail: The detail level
|
||
|
-- Returns a string with a texture name, or nil if no matching biome entry was found.
|
||
|
get_texture = function (name, height, detail)
|
||
|
for _,biome in ipairs(biome_lookup) do
|
||
|
local matches_height = (not biome.min_height or height >= biome.min_height)
|
||
|
and (not biome.max_height or height <= biome.max_height);
|
||
|
if biome.name == name and matches_height then
|
||
|
return cartographer.detail_texture(biome.textures, detail);
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return nil;
|
||
|
end,
|
||
|
};
|