mirror of
https://gitlab.com/gaelysam/mapgen_rivers.git
synced 2024-11-10 12:40:18 +01:00
96 lines
3.1 KiB
Lua
96 lines
3.1 KiB
Lua
local mtsettings = minetest.settings
|
|
local mgrsettings = Settings(minetest.get_worldpath() .. '/mapgen_rivers.conf')
|
|
|
|
mapgen_rivers.version = "1.0"
|
|
|
|
local previous_version_mt = mtsettings:get("mapgen_rivers_version") or "0.0"
|
|
local previous_version_mgr = mgrsettings:get("version") or "0.0"
|
|
|
|
if mapgen_rivers.version ~= previous_version_mt or mapgen_rivers.version ~= previous_version_mgr then
|
|
local compat_mt, compat_mgr = dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/compatibility.lua")
|
|
if mapgen_rivers.version ~= previous_version_mt then
|
|
compat_mt(mtsettings)
|
|
end
|
|
if mapgen_rivers.version ~= previous_version_mgr then
|
|
compat_mgr(mgrsettings)
|
|
end
|
|
end
|
|
|
|
mtsettings:set("mapgen_rivers_version", mapgen_rivers.version)
|
|
mgrsettings:set("version", mapgen_rivers.version)
|
|
|
|
function mapgen_rivers.define_setting(name, dtype, default)
|
|
if dtype == "number" or dtype == "string" then
|
|
local v = mgrsettings:get(name)
|
|
if v == nil then
|
|
v = mtsettings:get('mapgen_rivers_' .. name)
|
|
if v == nil then
|
|
v = default
|
|
end
|
|
mgrsettings:set(name, v)
|
|
end
|
|
if dtype == "number" then
|
|
return tonumber(v)
|
|
else
|
|
return v
|
|
end
|
|
elseif dtype == "bool" then
|
|
local v = mgrsettings:get_bool(name)
|
|
if v == nil then
|
|
v = mtsettings:get_bool('mapgen_rivers_' .. name)
|
|
if v == nil then
|
|
v = default
|
|
end
|
|
mgrsettings:set_bool(name, v)
|
|
end
|
|
return v
|
|
elseif dtype == "noise" then
|
|
local v = mgrsettings:get_np_group(name)
|
|
if v == nil then
|
|
v = mtsettings:get_np_group('mapgen_rivers_' .. name)
|
|
if v == nil then
|
|
v = default
|
|
end
|
|
mgrsettings:set_np_group(name, v)
|
|
end
|
|
return v
|
|
end
|
|
end
|
|
|
|
local def_setting = mapgen_rivers.define_setting
|
|
|
|
mapgen_rivers.settings = {
|
|
center = def_setting('center', 'bool', true),
|
|
blocksize = def_setting('blocksize', 'number', 15),
|
|
sea_level = tonumber(minetest.get_mapgen_setting('water_level')),
|
|
min_catchment = def_setting('min_catchment', 'number', 3600),
|
|
river_widening_power = def_setting('river_widening_power', 'number', 0.5),
|
|
riverbed_slope = def_setting('riverbed_slope', 'number', 0.4),
|
|
distort = def_setting('distort', 'bool', true),
|
|
biomes = def_setting('biomes', 'bool', true),
|
|
glaciers = def_setting('glaciers', 'bool', false),
|
|
glacier_factor = def_setting('glacier_factor', 'number', 8),
|
|
elevation_chill = def_setting('elevation_chill', 'number', 0.25),
|
|
|
|
grid_x_size = def_setting('grid_x_size', 'number', 1000),
|
|
grid_z_size = def_setting('grid_z_size', 'number', 1000),
|
|
evol_params = {
|
|
K = def_setting('river_erosion_coef', 'number', 0.5),
|
|
m = def_setting('river_erosion_power', 'number', 0.4),
|
|
d = def_setting('diffusive_erosion', 'number', 0.5),
|
|
compensation_radius = def_setting('compensation_radius', 'number', 50),
|
|
},
|
|
tectonic_speed = def_setting('tectonic_speed', 'number', 70),
|
|
evol_time = def_setting('evol_time', 'number', 10),
|
|
evol_time_step = def_setting('evol_time_step', 'number', 1),
|
|
|
|
load_all = mtsettings:get_bool('mapgen_rivers_load_all')
|
|
}
|
|
|
|
local function write_settings()
|
|
mgrsettings:write()
|
|
end
|
|
|
|
minetest.register_on_mods_loaded(write_settings)
|
|
minetest.register_on_shutdown(write_settings)
|