]> git.lizzy.rs Git - minetest.git/commitdiff
'All Settings': Don't use checkboxes for 'no...' mapgen flags (#7847)
authorMuhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>
Sun, 1 Sep 2019 21:43:41 +0000 (04:43 +0700)
committerParamat <paramat@users.noreply.github.com>
Sun, 1 Sep 2019 21:43:41 +0000 (22:43 +0100)
builtin/mainmenu/dlg_settings_advanced.lua
builtin/settingtypes.txt
src/defaultsettings.cpp

index 67e8c9ede87284ad411df2dc14324e053c9d8787..6d40ace357403b7f8a2813cc0fe7999ca99ac77c 100644 (file)
@@ -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
 
index a3059a7cb91447ab4f37cc1911889dca5e3ed349..4254603e25fb22284ec5d3c1743a0978d6987add 100644 (file)
@@ -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
index b6ab7c9a0cce80622755cfdcd2a0bf1855d9d41e..7756bc45d8011e2d3e2c22b6ec2209291a78ce7e 100644 (file)
@@ -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");