diff options
author | Muhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com> | 2019-09-02 04:43:41 +0700 |
---|---|---|
committer | Paramat <paramat@users.noreply.github.com> | 2019-09-01 22:43:41 +0100 |
commit | cd1d01b8b444b7f07a48cea57aa6f789d8bb54ef (patch) | |
tree | d121a58dcb74a84857515c0a57c5298446e8e92f | |
parent | 0013f064adca050f9325da060dc437bac092ca85 (diff) | |
download | minetest-cd1d01b8b444b7f07a48cea57aa6f789d8bb54ef.tar.gz minetest-cd1d01b8b444b7f07a48cea57aa6f789d8bb54ef.tar.bz2 minetest-cd1d01b8b444b7f07a48cea57aa6f789d8bb54ef.zip |
'All Settings': Don't use checkboxes for 'no...' mapgen flags (#7847)
-rw-r--r-- | builtin/mainmenu/dlg_settings_advanced.lua | 48 | ||||
-rw-r--r-- | builtin/settingtypes.txt | 2 | ||||
-rw-r--r-- | src/defaultsettings.cpp | 2 |
3 files changed, 31 insertions, 21 deletions
diff --git a/builtin/mainmenu/dlg_settings_advanced.lua b/builtin/mainmenu/dlg_settings_advanced.lua index 67e8c9ede..6d40ace35 100644 --- a/builtin/mainmenu/dlg_settings_advanced.lua +++ b/builtin/mainmenu/dlg_settings_advanced.lua @@ -670,14 +670,18 @@ local function create_change_setting_formspec(dialogdata) height = height + 1.1 elseif setting.type == "flags" then - local enabled_flags = flags_to_table(get_current_value(setting)) + local current_flags = flags_to_table(get_current_value(setting)) local flags = {} - for _, name in ipairs(enabled_flags) do + for _, name in ipairs(current_flags) do -- Index by name, to avoid iterating over all enabled_flags for every possible flag. - flags[name] = true + if name:sub(1, 2) == "no" then + flags[name:sub(3)] = false + else + flags[name] = true + end end - local flags_count = #setting.possible - local max_height = flags_count / 4 + local flags_count = #setting.possible / 2 + local max_height = math.ceil(flags_count / 2) / 2 -- More space for flags description_height = description_height - 1 @@ -685,19 +689,21 @@ local function create_change_setting_formspec(dialogdata) local fields = {} -- To build formspec for i, name in ipairs(setting.possible) do - local x = 0.5 - local y = height + i / 2 - 0.75 - if i - 1 >= flags_count / 2 then -- 2nd column - x = 5 - y = y - max_height - end - local checkbox_name = "cb_" .. name - local is_enabled = flags[name] == true -- to get false if nil - checkboxes[checkbox_name] = is_enabled + if name:sub(1, 2) ~= "no" then + local x = 0.5 + local y = height + i / 2 - 0.75 + if i - 1 >= flags_count / 2 then -- 2nd column + x = 5 + y = y - max_height + end + local checkbox_name = "cb_" .. name + local is_enabled = flags[name] == true -- to get false if nil + checkboxes[checkbox_name] = is_enabled - fields[#fields + 1] = ("checkbox[%f,%f;%s;%s;%s]"):format( - x, y, checkbox_name, name, tostring(is_enabled) - ) + fields[#fields + 1] = ("checkbox[%f,%f;%s;%s;%s]"):format( + x, y, checkbox_name, name, tostring(is_enabled) + ) + end end formspec = table.concat(fields) height = height + max_height + 0.25 @@ -833,8 +839,12 @@ local function handle_change_setting_buttons(this, fields) elseif setting.type == "flags" then local values = {} for _, name in ipairs(setting.possible) do - if checkboxes["cb_" .. name] then - table.insert(values, name) + if name:sub(1, 2) ~= "no" then + if checkboxes["cb_" .. name] then + table.insert(values, name) + else + table.insert(values, "no" .. name) + end end end diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index a3059a7cb..4254603e2 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1887,7 +1887,7 @@ mgfractal_np_dungeons (Dungeon noise) noise_params_3d 0.9, 0.5, (500, 500, 500), # 'vary_river_depth': If enabled, low humidity and high heat causes rivers # to become shallower and occasionally dry. # 'altitude_dry': Reduces humidity with altitude. -mgvalleys_spflags (Mapgen Valleys specific flags) flags altitude_chill,humid_rivers,vary_river_depth,altitude_dry altitude_chill,noaltitude_chill,humid_rivers,nohumid_rivers,vary_river_depth,novary_river_depth,altitude_dry,noaltitude_dry +mgvalleys_spflags (Mapgen Valleys specific flags) flags altitude_chill,humid_rivers,vary_river_depth,altitude_dry altitude_chill,humid_rivers,vary_river_depth,altitude_dry,noaltitude_chill,nohumid_rivers,novary_river_depth,noaltitude_dry # The vertical distance over which heat drops by 20 if 'altitude_chill' is # enabled. Also the vertical distance over which humidity drops by 10 if diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index b6ab7c9a0..7756bc45d 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -417,7 +417,7 @@ void set_default_settings(Settings *settings) settings->setDefault("water_level", "1"); settings->setDefault("mapgen_limit", "31000"); settings->setDefault("chunksize", "5"); - settings->setDefault("mg_flags", "dungeons"); + settings->setDefault("mg_flags", "caves,dungeons,light,decorations,biomes"); settings->setDefault("fixed_map_seed", ""); settings->setDefault("max_block_generate_distance", "8"); settings->setDefault("projecting_dungeons", "true"); |