57 lines
1.3 KiB
Lua
57 lines
1.3 KiB
Lua
-- This file takes care of the cave shapes.
|
|
|
|
noordstar_caves.registered_shapes = {}
|
|
|
|
-- 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.connectivity_point) ~= "number" then
|
|
return nil
|
|
end
|
|
if type(def.verticality_point) ~= "number" then
|
|
return nil
|
|
end
|
|
|
|
local d = {
|
|
name = def.name,
|
|
connectivity_point = def.connectivity_point,
|
|
verticality_point = def.verticality_point
|
|
}
|
|
|
|
if type(def.noise_params) == "table" then
|
|
d.noise_params = def.noise_params
|
|
end
|
|
|
|
if type(def.func) == "function" then
|
|
d.func = def.func
|
|
else
|
|
d.func = function(pos, v) return v end
|
|
end
|
|
|
|
if type(def.y_min) == "number" and type(def.y_max) == "number" then
|
|
d.y_min = def.y_min
|
|
d.y_max = def.y_max
|
|
end
|
|
|
|
return d
|
|
end
|
|
|
|
function noordstar_caves.register_shape(def)
|
|
local d = clean_def(def)
|
|
|
|
if d ~= nil then
|
|
noordstar_caves.registered_shapes[d.name] = d
|
|
end
|
|
end
|
|
|
|
function noordstar_caves.unregister_shape(name)
|
|
noordstar_caves.registered_shapes[name] = nil
|
|
end
|
|
|
|
function noordstar_caves.clear_registered_shapes()
|
|
noordstar_caves.registered_shapes = {}
|
|
end
|