summaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_settings.cpp
diff options
context:
space:
mode:
authorMuhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>2017-09-10 00:49:12 +0700
committerparamat <mat.gregory@virginmedia.com>2017-10-23 01:28:13 +0100
commita1e1a19ac355dbe7e1a2e060fd6b5fe082298eb6 (patch)
tree871e3058638547b7936a30f661042235110da9b2 /src/script/lua_api/l_settings.cpp
parentc60abb2aeccba2920d55a518fcffd2ad57f9f59a (diff)
downloadminetest-a1e1a19ac355dbe7e1a2e060fd6b5fe082298eb6.tar.gz
minetest-a1e1a19ac355dbe7e1a2e060fd6b5fe082298eb6.tar.bz2
minetest-a1e1a19ac355dbe7e1a2e060fd6b5fe082298eb6.zip
Improvements/fixes for noise parameter input in advanced settings
Formspec input for each individual noise parameter and flag. Allow noise flags to be set in advanced settings, previously only settable in minetest.conf. Standardise 'group format' for noise parameters set in minetest.conf, as only these support noise flags. However the older 'single line' format is still accepted to support existing minetest.conf files. Therefore auto-generate minetest.conf.example with noise parameters in 'group format'. Setting 'type' in settingtypes.txt is now either 'noise_params_2D' or 'noise_params_3D', the dimension number is displayed in the advanced settings edit page.
Diffstat (limited to 'src/script/lua_api/l_settings.cpp')
-rw-r--r--src/script/lua_api/l_settings.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/script/lua_api/l_settings.cpp b/src/script/lua_api/l_settings.cpp
index 2d6769ea1..141ac61d1 100644
--- a/src/script/lua_api/l_settings.cpp
+++ b/src/script/lua_api/l_settings.cpp
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "lua_api/l_internal.h"
#include "cpp_api/s_security.h"
#include "settings.h"
+#include "noise.h"
#include "log.h"
@@ -105,6 +106,24 @@ int LuaSettings::l_get_bool(lua_State* L)
return 1;
}
+// get_np_group(self, key) -> value
+int LuaSettings::l_get_np_group(lua_State *L)
+{
+ NO_MAP_LOCK_REQUIRED;
+ LuaSettings *o = checkobject(L, 1);
+
+ std::string key = std::string(luaL_checkstring(L, 2));
+ if (o->m_settings->exists(key)) {
+ NoiseParams np;
+ o->m_settings->getNoiseParams(key, np);
+ push_noiseparams(L, &np);
+ } else {
+ lua_pushnil(L);
+ }
+
+ return 1;
+}
+
// set(self, key, value)
int LuaSettings::l_set(lua_State* L)
{
@@ -138,6 +157,23 @@ int LuaSettings::l_set_bool(lua_State* L)
return 1;
}
+// set(self, key, value)
+int LuaSettings::l_set_np_group(lua_State *L)
+{
+ NO_MAP_LOCK_REQUIRED;
+ LuaSettings *o = checkobject(L, 1);
+
+ std::string key = std::string(luaL_checkstring(L, 2));
+ NoiseParams value;
+ read_noiseparams(L, 3, &value);
+
+ SET_SECURITY_CHECK(L, key);
+
+ o->m_settings->setNoiseParams(key, value, false);
+
+ return 0;
+}
+
// remove(self, key) -> success
int LuaSettings::l_remove(lua_State* L)
{
@@ -264,8 +300,10 @@ const char LuaSettings::className[] = "Settings";
const luaL_Reg LuaSettings::methods[] = {
luamethod(LuaSettings, get),
luamethod(LuaSettings, get_bool),
+ luamethod(LuaSettings, get_np_group),
luamethod(LuaSettings, set),
luamethod(LuaSettings, set_bool),
+ luamethod(LuaSettings, set_np_group),
luamethod(LuaSettings, remove),
luamethod(LuaSettings, get_names),
luamethod(LuaSettings, write),