mtimer/system/load_configuration.lua
Dirk Sohler 15ded5a0b2
implement an default settings configuration system
Settings can be placed in minetest.conf ow world-specific _mtimer.conf
files. See updated readme for details.
2020-08-16 00:13:24 +02:00

68 lines
2.2 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local S = mtimer.translator
local worldpath = minetest.get_worldpath()..DIR_DELIM
local worldconfig = Settings(worldpath..DIR_DELIM..'_mtimer.conf')
-- Set an option in mtimer.meta configuration table.
--
-- The function takes an unprefixed key name and tries to get this keys
-- configuration option and sets the table entry with that option and the
-- meta key name for that key. Because the meta settings system only allows
-- to write strings all values are converted to strings.
--
-- set('my_cool_key', 1337)
--
-- This setting creates the following table entry:
--
-- mtimer.meta.my_cool_key = {
-- key = 'mtimer:my_cool_key',
-- default = '1337'
-- }
--
-- The default value is searched in the following order When the setting is
-- not found in any of the locations an empty string is used
--
-- 1. Standard `minetest.conf` file that is used for the server
-- 2. `_mtimer.conf` in the loaded worlds directory
-- 3. Provided default value when calling the function
local set = function (key_name, default_value, changeable)
local meta_key = 'mtimer:'..key_name
local config_option = 'mtimer_'..key_name
local value = default_value
if changeable ~= false then
local global_setting = minetest.settings:get(config_option)
local world_setting = worldconfig:get(config_option)
value = world_setting or global_setting or default_value or ''
end
mtimer.meta[key_name] = {
key = meta_key,
default = tostring(value)
}
end
-- Display settings
set('color', '#ffffff')
set('hud_element_offset', minetest.serialize({ x = 0, y = 0 }), false)
set('hud_element_size', 1)
set('position', 'bl')
set('timezone_offset', 0)
set('visible', true)
-- Formatting settings
set('host_time_format', '{24h}:{min} ({isodate})')
set('ingame_time_format', '{24h}:{min}')
set('real_time_format', '{24h}:{min} ({isodate})')
set('session_duration_format', '{hours}:{minutes}')
set('session_start_time_format', '{isodate}T{isotime}')
-- Timer display format (the HUD elements content)
set('timer_format', table.concat({
S('Current Date: @1', '{rd}'),
S('Ingame Time: @1', '{it}'),
S('Session Start: @1', '{st}'),
S('Session Duration: @1', '{sd}')
}, '\n'), false)