variables can now have a default value other than nil

This commit is contained in:
Sokomine 2025-02-09 00:27:46 +01:00
parent ebd2999687
commit b2e2f843bd

View File

@ -53,6 +53,33 @@ yl_speak_up.fun_input_fs_manage_variables_check_fields = function(player, formna
false)
})
return
-- set default value
elseif(fields and fields.set_default_value and fields.default_value) then
-- store the new default value
if(fields.default_value == "") then
fields.default_value = nil
end
local k_long = var_name_with_prefix
local old_val = yl_speak_up.get_variable_metadata(k_long, "default_value", true)
yl_speak_up.set_variable_metadata(k_long, nil, "default_value", nil, fields.default_value)
local new_val = yl_speak_up.get_variable_metadata(k_long, "default_value", true)
yl_speak_up.show_fs(player, "msg", {
input_to = "yl_speak_up:manage_variables",
formspec = "size[10,3.5]"..
"label[0.2,0.0;The "..minetest.colorize("#FFFF00", "default value")..
" for variable\n\t"..
minetest.colorize("#FFFF00",
minetest.formspec_escape(tostring(var_name)))..
"\nhas been changed from\n\t"..
minetest.colorize("#FFFF00",
minetest.formspec_escape(old_val or ""))..
"\nto the NEW value\n\t"..
minetest.colorize("#FFFF00",
minetest.formspec_escape(new_val or "")).."]"..
"button[1.5,3.0;2,0.9;back_from_msg;Back]"
})
return
-- enable, disable and list variables in debug mode
elseif(fields and fields.enable_debug_mode and var_name) then
yl_speak_up.set_variable_metadata(var_name, pname, "debug", pname, true)
@ -448,9 +475,23 @@ yl_speak_up.get_fs_manage_variables = function(player, param)
"values into this variable."))
local var_type = (yl_speak_up.get_variable_metadata(k_long, "var_type")
or "String/text or numerical value, depending on how you use it")
table.insert(formspec, "label[0.2,5.05;Type of variable: ")
-- get the default value as-is (will usually be nil)
local var_default_val = (yl_speak_up.get_variable_metadata(k_long, "default_value", true)
or "")
table.insert(formspec, "label[0.2,4.95;Type of variable: ")
table.insert(formspec, minetest.colorize("#FFFF00", var_type)) -- show variable type
table.insert(formspec, ".]")
table.insert(formspec,
"label[0.2,5.55;Default value (when not set):]"..
"field[4.9,5.25;4.0,0.6;default_value;;"..
minetest.formspec_escape(var_default_val).."]"..
"button[9.0,5.25;4.5,0.6;set_default_value;Set default value]"..
"tooltip[default_value;By default, variables start unset with value \'nil\'. "..
"\nIf you set this to a diffrent value, the variable will have this "..
"\nvalue instead whenever it is unset."..
"\nNote: Internally it is still stored as \'nil\'.]"..
"tooltip[set_default_value;Store a new default value. Use empty input to set "..
"back to the default \'nil\'.]")
if(var_type == "quest") then
table.insert(formspec, "button[4.2,4.75;4.5,0.6;show_quest;Show and edit this quest]")
end