mtimer/system/load_configuration.lua

75 lines
2.6 KiB
Lua
Raw Normal View History

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
--
-- @param key_name The unprefixed name of the key to get
-- @param default_value What to return when the configuration option is missing
-- @param changeable If the option is changeable via the config files
-- @return string Either the configuration options value or an empty string
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}')
set('custom_timer_format', 'd: {days}, h: {hours}, m: {minutes}, s: {seconds}')
-- 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}'),
S('Custom Timer: @1', '{ct}')
}, '\n'), false)