From c2c397c2a50ae0a01f8043ee4ee4ed7041199306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20C?= Date: Sat, 24 Jul 2021 13:21:06 +0200 Subject: [PATCH] Added compatibility script to update parameter values coming from older versions --- compatibility.lua | 34 ++++++++++++++++++++++++++++++++++ settings.lua | 19 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 compatibility.lua diff --git a/compatibility.lua b/compatibility.lua new file mode 100644 index 0000000..18e22bf --- /dev/null +++ b/compatibility.lua @@ -0,0 +1,34 @@ +local function fix_min_catchment(settings, is_global) + local prefix = is_global and "mapgen_rivers_" or "" + + local min_catchment = settings:get(prefix.."min_catchment") + if min_catchment then + min_catchment = tonumber(min_catchment) + local blocksize = tonumber(settings:get(prefix.."blocksize") or 15) + settings:set(prefix.."min_catchment", tonumber(min_catchment) * blocksize*blocksize) + local max_catchment = settings:get(prefix.."max_catchment") + if max_catchment then + max_catchment = tonumber(max_catchment) + local wpower = math.log(2*blocksize)/math.log(max_catchment/min_catchment) + settings:set(prefix.."river_widening_power", wpower) + end + end +end + +local function fix_compatibility_minetest(settings) + local previous_version = settings:get("mapgen_rivers_version") or "0.0" + + if previous_version == "0.0" then + fix_min_catchment(settings, true) + end +end + +local function fix_compatibility_mapgen_rivers(settings) + local previous_version = settings:get("version") or "0.0" + + if previous_version == "0.0" then + fix_min_catchment(settings, false) + end +end + +return fix_compatibility_minetest, fix_compatibility_mapgen_rivers diff --git a/settings.lua b/settings.lua index 4ad6582..18e9710 100644 --- a/settings.lua +++ b/settings.lua @@ -1,5 +1,24 @@ 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)