mirror of
https://gitlab.com/4w/mtimer.git
synced 2024-11-25 00:33:47 +01:00
93771fbbaf
Formspec, menu entry, and logic are done. Logic for setting the timer offsets on receiving formspec fields needs to be done.
86 lines
3.5 KiB
Lua
86 lines
3.5 KiB
Lua
local m = mtimer
|
|
local S = m.translator
|
|
local d = m.dialog
|
|
local cs = minetest.chat_send_player
|
|
|
|
|
|
-- Colorize a command sequence
|
|
--
|
|
-- This function returns a colorized chat command sequence with the given
|
|
-- parameter and the needed spacing
|
|
--
|
|
-- @param command The chat command paramter
|
|
-- @return table The colorized string
|
|
local command = function (command)
|
|
return minetest.colorize('cyan', '/mtimer '..command..' ')
|
|
end
|
|
|
|
|
|
-- Chat command
|
|
--
|
|
-- The `/mtimer` chat command opens the main menu and allows to directly open
|
|
-- the formspecs for the specific configuration. It can be run by all users.
|
|
--
|
|
-- The following parameters are supported.
|
|
--
|
|
-- Parameter Mnemonic Action
|
|
-- -------------------------------------------------------------------
|
|
-- vi visibility d.set_visibility(name)
|
|
-- po position d.set_position(name)
|
|
-- co color d.sec_color(name)
|
|
-- tz timezone d.timezone_offset(name)
|
|
-- in ingame d.ingame_time_format(name)
|
|
-- re real d.real_world_time_format(name)
|
|
-- ht host time d.host_time_format(name)
|
|
-- st start time d.session_start_time_format(name)
|
|
-- sd session duration d.session_duration_format(name)
|
|
-- hs HUD size d.hud_element_size(name)
|
|
-- os OffSet d.hud_element_offset(name)
|
|
-- tf timer format d.timer_format(name)
|
|
-- -------------------------------------------------------------------
|
|
-- help Prints the help output showing the parameters
|
|
--
|
|
-- Providing unknown parameters has no effect.
|
|
minetest.register_chatcommand('mtimer', {
|
|
description = S('Configure timer display'),
|
|
params = '<vi/po/co/tz/in/re/st/sd/tt/help>',
|
|
func = function(name, parameters)
|
|
local action = parameters:match('%a+')
|
|
|
|
if not minetest.get_player_by_name(name) then return end
|
|
if not action then d.main_menu(name) end
|
|
|
|
if action == 'vi' then d.set_visibility(name) end
|
|
if action == 'po' then d.set_position(name) end
|
|
if action == 'co' then d.set_color(name) end
|
|
if action == 'tz' then d.timezone_offset(name) end
|
|
if action == 'in' then d.ingame_time_format(name) end
|
|
if action == 're' then d.real_world_time_format(name) end
|
|
if action == 'ht' then d.host_time_format(name) end
|
|
if action == 'st' then d.session_start_time_format(name) end
|
|
if action == 'sd' then d.session_duration_format(name) end
|
|
if action == 'hs' then d.hud_element_size(name) end
|
|
if action == 'os' then d.hud_element_offset(name) end
|
|
if action == 'tf' then d.timer_format(name) end
|
|
|
|
if action == 'help' then
|
|
local message = {
|
|
command('vi')..S('Visibility'),
|
|
command('po')..S('Position'),
|
|
command('co')..S('Color'),
|
|
command('tz')..S('Timezone Offset'),
|
|
command('in')..S('Ingame Time Format'),
|
|
command('re')..S('Real-World Time Format'),
|
|
command('ht')..S('Host Time Format'),
|
|
command('st')..S('Session Start Time Format'),
|
|
command('sd')..S('Session Duration Format'),
|
|
command('hs')..S('HUD Element Size'),
|
|
command('os')..S('HUD Element Offset'),
|
|
command('tf')..S('Timer Format'),
|
|
command(' ')..S('Open Main Menu')
|
|
}
|
|
cs(name, table.concat(message, '\n'))
|
|
end
|
|
end
|
|
})
|