mirror of
https://gitlab.com/4w/mtimer.git
synced 2024-11-24 16:23:44 +01:00
60e55dc36a
Nothing is done right now but the custoim timer is fully implemented into mTimer’s logic and is processed regularly. Next step is to write the custom timer formspec and logic.
75 lines
2.6 KiB
Lua
75 lines
2.6 KiB
Lua
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 key’s
|
||
-- 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 world’s 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 option’s 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 element’s 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)
|