Add biome API
Note: the engine implementation is still missing as of this commit.pull/1/head
parent
1250abe7d8
commit
b9e18f70eb
|
@ -0,0 +1,88 @@
|
|||
-- This file takes care of cave biomes
|
||||
|
||||
noordstar_caves.registered_biomes = {}
|
||||
|
||||
-- Clean the input and return a valid shape def
|
||||
-- If the input is invalid, return nil
|
||||
local function clean_def(def)
|
||||
if type(def.name) ~= "string" then
|
||||
return nil
|
||||
end
|
||||
if type(def.heat_point) ~= "number" then
|
||||
return nil
|
||||
end
|
||||
if type(def.humidity_point) ~= "number" then
|
||||
return nil
|
||||
end
|
||||
|
||||
local d = {
|
||||
name = def.name,
|
||||
heat_point = def.heat_point,
|
||||
humidity_point = def.humidity_point,
|
||||
}
|
||||
|
||||
-- Position
|
||||
if type(def.min_pos) == "table" then
|
||||
d.minp = {
|
||||
x = def.min_pos.x or -1e5,
|
||||
y = def.min_pos.y or -1e5,
|
||||
z = def.min_pos.z or -1e5,
|
||||
}
|
||||
elseif type(def.y_min) == "number" then
|
||||
d.minp = { x = -1e5, y = def.y_min, z = -1e5 }
|
||||
else
|
||||
d.minp = { x = -1e5, y = -1e5, z = -1e5 }
|
||||
end
|
||||
|
||||
if type(def.max_pos) == "table" then
|
||||
d.maxp = {
|
||||
x = def.max_pos.x or 1e5,
|
||||
y = def.max_pos.y or 1e5,
|
||||
z = def.max_pos.z or 1e5,
|
||||
}
|
||||
elseif type(def.y_max) == "number" then
|
||||
d.maxp = { x = 1e5, y = def.y_max, z = 1e5 }
|
||||
else
|
||||
d.maxp = { x = 1e5, y = 1e5, z = 1e5 }
|
||||
end
|
||||
|
||||
-- Optional nodes
|
||||
if type(def.node_dust) == "string" then
|
||||
d.node_dust = def.node_dust
|
||||
end
|
||||
if type(def.node_floor) == "string" then
|
||||
d.node_floor = def.node_floor
|
||||
end
|
||||
if type(def.node_wall) == "string" then
|
||||
d.node_wall = def.node_wall
|
||||
end
|
||||
if type(def.node_roof) == "string" then
|
||||
d.node_roof = def.node_roof
|
||||
end
|
||||
if type(def.node_shell) == "string" then
|
||||
d.node_shell = def.node_shell
|
||||
end
|
||||
if type(def.depth_shell) == "number" then
|
||||
d.depth_shell = def.depth_shell
|
||||
else
|
||||
d.depth_shell = 0
|
||||
end
|
||||
|
||||
return d
|
||||
end
|
||||
|
||||
function noordstar_caves.register_biome(def)
|
||||
local d = clean_def(def)
|
||||
|
||||
if d ~= nil then
|
||||
noordstar_caves.registered_biomes[d.name] = d
|
||||
end
|
||||
end
|
||||
|
||||
function noordstar_caves.unregister_biome(name)
|
||||
noordstar_caves.registered_biomes[name] = nil
|
||||
end
|
||||
|
||||
function noordstar_caves.clear_registered_biomes()
|
||||
noordstar_caves.registered_biomes = {}
|
||||
end
|
Loading…
Reference in New Issue