From 3570f3e396acad4a6b5381d06c2dae5cf4e95fbd Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sat, 15 Feb 2014 18:20:15 -0500 Subject: Add minetest.set_noiseparam_defaults() Lua API --- src/script/lua_api/l_mapgen.cpp | 28 ++++++++++++++++++++++++++++ src/script/lua_api/l_mapgen.h | 3 +++ 2 files changed, 31 insertions(+) (limited to 'src/script/lua_api') diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index 2e6d848b3..a7af856de 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -229,6 +229,33 @@ int ModApiMapgen::l_set_mapgen_params(lua_State *L) return 0; } +// minetest.set_noiseparam_defaults({np1={noise params}, ...}) +// set default values for noise parameters if not present in global settings +int ModApiMapgen::l_set_noiseparam_defaults(lua_State *L) +{ + NoiseParams np; + std::string val, name; + + if (!lua_istable(L, 1)) + return 0; + + lua_pushnil(L); + while (lua_next(L, 1)) { + if (read_noiseparams_nc(L, -1, &np)) { + if (!serializeStructToString(&val, NOISEPARAMS_FMT_STR, &np)) + continue; + if (!lua_isstring(L, -2)) + continue; + + name = lua_tostring(L, -2); + g_settings->setDefault(name, val); + } + lua_pop(L, 1); + } + + return 0; +} + // set_gen_notify(string) int ModApiMapgen::l_set_gen_notify(lua_State *L) { @@ -607,6 +634,7 @@ void ModApiMapgen::Initialize(lua_State *L, int top) API_FCT(get_mapgen_object); API_FCT(set_mapgen_params); + API_FCT(set_noiseparam_defaults); API_FCT(set_gen_notify); API_FCT(register_biome); diff --git a/src/script/lua_api/l_mapgen.h b/src/script/lua_api/l_mapgen.h index 43fd6a09f..8624f9775 100644 --- a/src/script/lua_api/l_mapgen.h +++ b/src/script/lua_api/l_mapgen.h @@ -32,6 +32,9 @@ private: // set mapgen parameters static int l_set_mapgen_params(lua_State *L); + // minetest.set_noiseparam_defaults({np1={noise params}, ...}) + static int l_set_noiseparam_defaults(lua_State *L); + // set_gen_notify(flagstring) static int l_set_gen_notify(lua_State *L); -- cgit v1.2.3