aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/mainmenu/common.lua16
-rw-r--r--builtin/mainmenu/tab_server.lua2
-rw-r--r--builtin/mainmenu/tab_singleplayer.lua2
3 files changed, 10 insertions, 10 deletions
diff --git a/builtin/mainmenu/common.lua b/builtin/mainmenu/common.lua
index bcb075f99..5cd16a9ea 100644
--- a/builtin/mainmenu/common.lua
+++ b/builtin/mainmenu/common.lua
@@ -307,7 +307,7 @@ function menu_worldmt(selected, setting, value)
local filename = world.path .. DIR_DELIM .. "world.mt"
local world_conf = Settings(filename)
- if value then
+ if value ~= nil then
if not world_conf:write() then
core.log("error", "Failed to write world config file")
end
@@ -320,14 +320,14 @@ function menu_worldmt(selected, setting, value)
end
end
-function menu_worldmt_legacy()
- local modes = {"creative_mode", "enable_damage"}
- for _, mode in pairs(modes) do
- local mode = menu_worldmt(selected, ""..mode.."")
- if mode then
- core.setting_set(""..mode.."", mode)
+function menu_worldmt_legacy(selected)
+ local modes_names = {"creative_mode", "enable_damage"}
+ for _, mode_name in pairs(modes_names) do
+ local mode_val = menu_worldmt(selected, mode_name)
+ if mode_val ~= nil then
+ core.setting_set(mode_name, mode_val)
else
- menu_worldmt(selected, ""..mode.."", core.setting_get(""..mode..""))
+ menu_worldmt(selected, mode_name, core.setting_get(mode_name))
end
end
end
diff --git a/builtin/mainmenu/tab_server.lua b/builtin/mainmenu/tab_server.lua
index 2362d32a1..3459f3f2f 100644
--- a/builtin/mainmenu/tab_server.lua
+++ b/builtin/mainmenu/tab_server.lua
@@ -69,7 +69,7 @@ local function main_button_handler(this, fields, name, tabdata)
local event = core.explode_textlist_event(fields["srv_worlds"])
local selected = core.get_textlist_index("srv_worlds")
- menu_worldmt_legacy()
+ menu_worldmt_legacy(selected)
if event.type == "DCL" then
world_doubleclick = true
diff --git a/builtin/mainmenu/tab_singleplayer.lua b/builtin/mainmenu/tab_singleplayer.lua
index 916b0c188..a7cf5120c 100644
--- a/builtin/mainmenu/tab_singleplayer.lua
+++ b/builtin/mainmenu/tab_singleplayer.lua
@@ -107,7 +107,7 @@ local function main_button_handler(this, fields, name, tabdata)
local event = core.explode_textlist_event(fields["sp_worlds"])
local selected = core.get_textlist_index("sp_worlds")
- menu_worldmt_legacy()
+ menu_worldmt_legacy(selected)
if event.type == "DCL" then
world_doubleclick = true
"hl kwc">std::string getShaderPath(const std::string &name_of_shader, const std::string &filename); struct ShaderInfo { std::string name = ""; video::E_MATERIAL_TYPE base_material = video::EMT_SOLID; video::E_MATERIAL_TYPE material = video::EMT_SOLID; u8 drawtype = 0; u8 material_type = 0; ShaderInfo() {} virtual ~ShaderInfo() {} }; /* Setter of constants for shaders */ namespace irr { namespace video { class IMaterialRendererServices; } } class IShaderConstantSetter { public: virtual ~IShaderConstantSetter(){}; virtual void onSetConstants(video::IMaterialRendererServices *services, bool is_highlevel) = 0; }; class IShaderConstantSetterFactory { public: virtual ~IShaderConstantSetterFactory() {}; virtual IShaderConstantSetter* create() = 0; }; template <typename T, std::size_t count=1> class CachedShaderSetting { const char *m_name; T m_sent[count]; bool has_been_set = false; bool is_pixel; protected: CachedShaderSetting(const char *name, bool is_pixel) : m_name(name), is_pixel(is_pixel) {} public: void set(const T value[count], video::IMaterialRendererServices *services) { if (has_been_set && std::equal(m_sent, m_sent + count, value)) return; if (is_pixel) services->setPixelShaderConstant(m_name, value, count); else services->setVertexShaderConstant(m_name, value, count); std::copy(value, value + count, m_sent); has_been_set = true; } }; template <typename T, std::size_t count = 1> class CachedPixelShaderSetting : public CachedShaderSetting<T, count> { public: CachedPixelShaderSetting(const char *name) : CachedShaderSetting<T, count>(name, true){} }; template <typename T, std::size_t count = 1>