Rename and repurpose minetest.set_noiseparam_defaults to set_noiseparams
authorkwolekr <kwolekr@minetest.net>
Wed, 10 Dec 2014 04:44:04 +0000 (23:44 -0500)
committerkwolekr <kwolekr@minetest.net>
Wed, 10 Dec 2014 04:44:04 +0000 (23:44 -0500)
doc/lua_api.txt
src/script/lua_api/l_mapgen.cpp
src/script/lua_api/l_mapgen.h

index df4b59a054a13ecc80cddf1606f15992e4b10929..4e63a02e042a54525d8fc046640b459807bb6096 100644 (file)
@@ -1547,10 +1547,10 @@ minetest.set_mapgen_params(MapgenParams)
 ^ Leave field unset to leave that parameter unchanged
 ^ flags contains a comma-delimited string of flags to set, or if the prefix "no" is attached, clears instead.
 ^ flags is in the same format and has the same options as 'mg_flags' in minetest.conf
-minetest.set_noiseparam_defaults({np1=NoiseParams, np2= NoiseParams, ...})
-^ Sets the default value of a noiseparam setting
-^ Takes a table as an argument that maps one or more setting names to NoiseParams structures
-^ Possible setting names consist of any NoiseParams setting exposed through the global settings
+minetest.set_noiseparams(name, noiseparams, set_default)
+^ Sets the noiseparams setting of 'name' to the noiseparams table specified in 'noiseparams'.
+^ 'set_default', is an optional boolean (default of true) that specifies whether the setting
+^ should be applied to the default config or current active config
 minetest.clear_objects()
 ^ clear all objects in the environments
 minetest.line_of_sight(pos1, pos2, stepsize) -> true/false, pos
index 78cf389e0a493c58cc9fcfcebf03c4a5986b14e1..0e3d219a4ecf83fdd71d2868d7ee07511249d70f 100644 (file)
@@ -262,32 +262,19 @@ int ModApiMapgen::l_set_mapgen_params(lua_State *L)
        return 0;
 }
 
-// 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)
+// set_noiseparams(name, noiseparams, set_default)
+// set global config values for noise parameters
+int ModApiMapgen::l_set_noiseparams(lua_State *L)
 {
-       NoiseParams np;
-       std::string val, name;
+       const char *name = luaL_checkstring(L, 1);
 
-       if (!lua_istable(L, 1))
+       NoiseParams np;
+       if (!read_noiseparams(L, 2, &np))
                return 0;
 
-       lua_pushnil(L);
-       while (lua_next(L, 1)) {
-               if (read_noiseparams(L, -1, &np)) {
-                       /// TODO(hmmmm): Update this for newer noiseparam formats
-                       /// Right now this is safe because serializeStructToString() won't
-                       /// touch memory outside of what the format string specifies
-                       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);
-       }
+       bool set_default = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : true;
+
+       g_settings->setNoiseParams(name, np, set_default);
 
        return 0;
 }
@@ -682,7 +669,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_noiseparams);
        API_FCT(set_gen_notify);
 
        API_FCT(register_biome);
index d76190f273119f334b2e6ae29e8204cc85b5236b..72bf1f59b265c1e55c07bf3617b0e5b7923ea383 100644 (file)
@@ -37,8 +37,8 @@ private:
        // set mapgen parameters
        static int l_set_mapgen_params(lua_State *L);
 
-       // set_noiseparam_defaults({np1={noise params}, ...})
-       static int l_set_noiseparam_defaults(lua_State *L);
+       // set_noiseparam_defaults(name, noiseparams, set_default)
+       static int l_set_noiseparams(lua_State *L);
 
        // set_gen_notify(flagstring)
        static int l_set_gen_notify(lua_State *L);