mirror of
https://github.com/minetest/minetest.git
synced 2024-09-19 20:08:33 +02:00
a1e1a19ac3
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.
127 lines
3.6 KiB
Lua
127 lines
3.6 KiB
Lua
local settings = ...
|
|
|
|
local concat = table.concat
|
|
local insert = table.insert
|
|
local sprintf = string.format
|
|
local rep = string.rep
|
|
|
|
local minetest_example_header = [[
|
|
# This file contains a list of all available settings and their default value for minetest.conf
|
|
|
|
# By default, all the settings are commented and not functional.
|
|
# Uncomment settings by removing the preceding #.
|
|
|
|
# minetest.conf is read by default from:
|
|
# ../minetest.conf
|
|
# ../../minetest.conf
|
|
# Any other path can be chosen by passing the path as a parameter
|
|
# to the program, eg. "minetest.exe --config ../minetest.conf.example".
|
|
|
|
# Further documentation:
|
|
# http://wiki.minetest.net/
|
|
|
|
]]
|
|
|
|
local group_format_template = [[
|
|
# %s = {
|
|
# offset = %s,
|
|
# scale = %s,
|
|
# spread = (%s, %s, %s),
|
|
# seed = %s,
|
|
# octaves = %s,
|
|
# persistence = %s,
|
|
# lacunarity = %s,
|
|
# flags = "%s"
|
|
# }
|
|
|
|
]]
|
|
|
|
local function create_minetest_conf_example()
|
|
local result = { minetest_example_header }
|
|
for _, entry in ipairs(settings) do
|
|
if entry.type == "category" then
|
|
if entry.level == 0 then
|
|
insert(result, "#\n# " .. entry.name .. "\n#\n\n")
|
|
else
|
|
insert(result, rep("#", entry.level))
|
|
insert(result, "# " .. entry.name .. "\n\n")
|
|
end
|
|
else
|
|
local group_format = false
|
|
if entry.noise_params and entry.values then
|
|
if entry.type == "noise_params_2d" or entry.type == "noise_params_3d" then
|
|
group_format = true
|
|
end
|
|
end
|
|
if entry.comment ~= "" then
|
|
for _, comment_line in ipairs(entry.comment:split("\n", true)) do
|
|
insert(result, "# " .. comment_line .. "\n")
|
|
end
|
|
end
|
|
insert(result, "# type: " .. entry.type)
|
|
if entry.min then
|
|
insert(result, " min: " .. entry.min)
|
|
end
|
|
if entry.max then
|
|
insert(result, " max: " .. entry.max)
|
|
end
|
|
if entry.values and entry.noise_params == nil then
|
|
insert(result, " values: " .. concat(entry.values, ", "))
|
|
end
|
|
if entry.possible then
|
|
insert(result, " possible values: " .. concat(entry.possible, ", "))
|
|
end
|
|
insert(result, "\n")
|
|
if group_format == true then
|
|
insert(result, sprintf(group_format_template, entry.name, entry.values[1],
|
|
entry.values[2], entry.values[3], entry.values[4], entry.values[5],
|
|
entry.values[6], entry.values[7], entry.values[8], entry.values[9],
|
|
entry.values[10]))
|
|
else
|
|
local append
|
|
if entry.default ~= "" then
|
|
append = " " .. entry.default
|
|
end
|
|
insert(result, sprintf("# %s =%s\n\n", entry.name, append or ""))
|
|
end
|
|
end
|
|
end
|
|
return concat(result)
|
|
end
|
|
|
|
local translation_file_header = [[
|
|
// This file is automatically generated
|
|
// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files
|
|
// To update it, refer to the bottom of builtin/mainmenu/dlg_settings_advanced.lua
|
|
|
|
fake_function() {]]
|
|
|
|
local function create_translation_file()
|
|
local result = { translation_file_header }
|
|
for _, entry in ipairs(settings) do
|
|
if entry.type == "category" then
|
|
insert(result, sprintf("\tgettext(%q);", entry.name))
|
|
else
|
|
if entry.readable_name then
|
|
insert(result, sprintf("\tgettext(%q);", entry.readable_name))
|
|
end
|
|
if entry.comment ~= "" then
|
|
local comment_escaped = entry.comment:gsub("\n", "\\n")
|
|
comment_escaped = comment_escaped:gsub("\"", "\\\"")
|
|
insert(result, "\tgettext(\"" .. comment_escaped .. "\");")
|
|
end
|
|
end
|
|
end
|
|
insert(result, "}\n")
|
|
return concat(result, "\n")
|
|
end
|
|
|
|
local file = assert(io.open("minetest.conf.example", "w"))
|
|
file:write(create_minetest_conf_example())
|
|
file:close()
|
|
|
|
file = assert(io.open("src/settings_translation_file.cpp", "w"))
|
|
file:write(create_translation_file())
|
|
file:close()
|
|
|