add host time format setting

This commit is contained in:
Dirk Sohler 2019-04-12 21:56:06 +02:00
parent a3f7c60ead
commit 3d0d58fe64
No known key found for this signature in database
GPG Key ID: B9751241BD7D4E1A
8 changed files with 55 additions and 16 deletions

@ -29,6 +29,10 @@ mtimer = {
key = 'mtimer:real_time_format', key = 'mtimer:real_time_format',
default = '{24h}:{min} ({isodate})' default = '{24h}:{min} ({isodate})'
}, },
host_time = {
key = 'mtimer:host_time_format',
default = '{24h}:{min} ({isodate})'
},
session_start_time = { session_start_time = {
key = 'mtimer:session_start_time_format', key = 'mtimer:session_start_time_format',
default = '{isodate}T{isotime}' default = '{isodate}T{isotime}'

@ -6,6 +6,7 @@ Ingame Time Format=Spielzeit-Format
Open Main Menu=Hauptmenü öffnen Open Main Menu=Hauptmenü öffnen
Position=Ausrichtung Position=Ausrichtung
Real-World Time Format=Realzeit-Format Real-World Time Format=Realzeit-Format
Host Time Format=Hostzeit-Format
Reset Everything=Alles zurücksetzen Reset Everything=Alles zurücksetzen
Session Duration Format=Sitzungsdauer-Format Session Duration Format=Sitzungsdauer-Format
Session Start Time Format=Sitzungsstartzeit-Format Session Start Time Format=Sitzungsstartzeit-Format

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 32 KiB

@ -31,6 +31,7 @@ end
-- tz timezone d.timezone_offset(name) -- tz timezone d.timezone_offset(name)
-- in ingame d.ingame_time_format(name) -- in ingame d.ingame_time_format(name)
-- re real d.real_world_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) -- st start time d.session_start_time_format(name)
-- sd session duration d.session_duration_format(name) -- sd session duration d.session_duration_format(name)
-- tf timer format d.timer_format(name) -- tf timer format d.timer_format(name)
@ -53,6 +54,7 @@ minetest.register_chatcommand('mtimer', {
if action == 'tz' then d.timezone_offset(name) end if action == 'tz' then d.timezone_offset(name) end
if action == 'in' then d.ingame_time_format(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 == '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 == 'st' then d.session_start_time_format(name) end
if action == 'sd' then d.session_duration_format(name) end if action == 'sd' then d.session_duration_format(name) end
if action == 'tf' then d.timer_format(name) end if action == 'tf' then d.timer_format(name) end
@ -65,6 +67,7 @@ minetest.register_chatcommand('mtimer', {
command('tz')..S('Timezone Offset'), command('tz')..S('Timezone Offset'),
command('in')..S('Ingame Time Format'), command('in')..S('Ingame Time Format'),
command('re')..S('Real-World Time Format'), command('re')..S('Real-World Time Format'),
command('ht')..S('Host Time Format'),
command('st')..S('Session Start Time Format'), command('st')..S('Session Start Time Format'),
command('sd')..S('Session Duration Format'), command('sd')..S('Session Duration Format'),
command('tf')..S('Timer Format'), command('tf')..S('Timer Format'),

@ -26,7 +26,7 @@ mtimer.dialog.main_menu = function (player_name)
mtimer.show_formspec('mtimer:main_menu', { mtimer.show_formspec('mtimer:main_menu', {
title = S('mTimer'), title = S('mTimer'),
width = 9.5, width = 9.5,
height = 6.125, height = 7.125,
prefix = '', prefix = '',
add_buttons = false, add_buttons = false,
show_to = player_name, show_to = player_name,
@ -43,13 +43,14 @@ mtimer.dialog.main_menu = function (player_name)
'button[0,1.5;3,1;real_world_time_format;'..S('Real-World Time Format')..']', 'button[0,1.5;3,1;real_world_time_format;'..S('Real-World Time Format')..']',
'button[0,2.5;3,1;session_start_time_format;'..S('Session Start Time Format')..']', 'button[0,2.5;3,1;session_start_time_format;'..S('Session Start Time Format')..']',
'button[0,3.5;3,1;session_duration_format;'..S('Session Duration Format')..']', 'button[0,3.5;3,1;session_duration_format;'..S('Session Duration Format')..']',
'button[0,4.5;3,1;host_time_format;'..S('Host Time Format')..']',
'container_end[]', 'container_end[]',
'container[6.5,0]', 'container[6.5,0]',
'label[0,0;'..S('Timer Configuration')..']', 'label[0,0;'..S('Timer Configuration')..']',
'button[0,0.5;3,1;timer_format;'..S('Timer Format')..']', 'button[0,0.5;3,1;timer_format;'..S('Timer Format')..']',
'button[0,1.5;3,1;timezone_offset;'..S('Timezone Offset')..']', 'button[0,1.5;3,1;timezone_offset;'..S('Timezone Offset')..']',
'container_end[]', 'container_end[]',
'container[0,4.55]', 'container[0,5.55]',
'box[0,0;+linewidth,0.04;#ffffff]', 'box[0,0;+linewidth,0.04;#ffffff]',
'button[4.5,0.225;2.5,1;reset_everything;'..S('Reset Everything')..']', 'button[4.5,0.225;2.5,1;reset_everything;'..S('Reset Everything')..']',
'button_exit[7,0.225;2.5,1;exit;'..S('Exit')..']', 'button_exit[7,0.225;2.5,1;exit;'..S('Exit')..']',
@ -183,6 +184,15 @@ mtimer.dialog.real_world_time_format = function (player_name)
end end
mtimer.dialog.host_time_format = function (player_name)
mtimer.dialog.real_time_universal(player_name, {
time_type = 'host_time',
formspec_name = 'mtimer:host_time_format',
title = S('Host Time Format')
})
end
mtimer.dialog.session_start_time_format = function (player_name) mtimer.dialog.session_start_time_format = function (player_name)
mtimer.dialog.real_time_universal(player_name, { mtimer.dialog.real_time_universal(player_name, {
time_type = 'session_start_time', time_type = 'session_start_time',
@ -226,7 +236,7 @@ mtimer.dialog.timer_format = function (player_name)
mtimer.show_formspec('mtimer:timer_format', { mtimer.show_formspec('mtimer:timer_format', {
title = S('Timer Format'), title = S('Timer Format'),
show_to = player_name, show_to = player_name,
height = 4.41, height = 4.75,
formspec = { formspec = {
'textarea[0.3,0;6,2.5;format;;'..fe(timer_data.format)..']', 'textarea[0.3,0;6,2.5;format;;'..fe(timer_data.format)..']',
'container[0,2.18]', 'container[0,2.18]',
@ -237,6 +247,7 @@ mtimer.dialog.timer_format = function (player_name)
'label[0,0.9;'..S('In-Game Time')..'] label[2.5,0.9;{it}] label[4,0.9;'..fe(timer_data.ingame_time)..']', 'label[0,0.9;'..S('In-Game Time')..'] label[2.5,0.9;{it}] label[4,0.9;'..fe(timer_data.ingame_time)..']',
'label[0,1.3;'..S('Session Start Time')..'] label[2.5,1.3;{st}] label[4,1.3;'..fe(timer_data.session_start_time)..']', 'label[0,1.3;'..S('Session Start Time')..'] label[2.5,1.3;{st}] label[4,1.3;'..fe(timer_data.session_start_time)..']',
'label[0,1.7;'..S('Session Duration')..'] label[2.5,1.7;{sd}] label[4,1.7;'..fe(timer_data.session_duration)..']', 'label[0,1.7;'..S('Session Duration')..'] label[2.5,1.7;{sd}] label[4,1.7;'..fe(timer_data.session_duration)..']',
'label[0,2.1;'..S('Host Time')..'] label[2.5,2.1;{ht}] label[4,2.1;'..fe(timer_data.host_time)..']',
'container_end[]', 'container_end[]',
'container[6,0]', 'container[6,0]',
'button[0,-0.05;2,1;apply;'..S('Apply')..']', 'button[0,-0.05;2,1;apply;'..S('Apply')..']',

@ -25,7 +25,8 @@ mtimer.get_timer_data = function (player_name)
real_world_date = time_data.real_time.formatted, real_world_date = time_data.real_time.formatted,
ingame_time = time_data.ingame_time.formatted, ingame_time = time_data.ingame_time.formatted,
session_start_time = time_data.session_start_time.formatted, session_start_time = time_data.session_start_time.formatted,
session_duration = time_data.session_duration.formatted session_duration = time_data.session_duration.formatted,
host_time = time_data.host_time.formatted
} }
values['formatted'] = values.format:gsub('{[0-9a-z]+}', { values['formatted'] = values.format:gsub('{[0-9a-z]+}', {
@ -33,6 +34,7 @@ mtimer.get_timer_data = function (player_name)
['{it}'] = values.ingame_time, ['{it}'] = values.ingame_time,
['{st}'] = values.session_start_time, ['{st}'] = values.session_start_time,
['{sd}'] = values.session_duration, ['{sd}'] = values.session_duration,
['{ht}'] = values.host_time
}) })
return values return values

@ -77,6 +77,7 @@ local get_real_time_universal = function (player_name, time_type)
local server_timestamp = '' local server_timestamp = ''
local local_timestamp = '' local local_timestamp = ''
local format = '' local format = ''
local force_utc = '!'
if time_type == 'real' then if time_type == 'real' then
server_timestamp = os.time() server_timestamp = os.time()
@ -86,6 +87,11 @@ local get_real_time_universal = function (player_name, time_type)
server_timestamp = player_meta:get('mtimer:session_start') server_timestamp = player_meta:get('mtimer:session_start')
local_timestamp = server_timestamp + ((timezone_offset*60)*60) local_timestamp = server_timestamp + ((timezone_offset*60)*60)
format = player_meta:get_string(m_meta.session_start_time.key) format = player_meta:get_string(m_meta.session_start_time.key)
elseif time_type == 'host' then
server_timestamp = os.time()
local_timestamp = server_timestamp
format = player_meta:get_string(m_meta.host_time.key)
force_utc = ''
end end
local date_names = get_date_names({ local date_names = get_date_names({
@ -100,17 +106,17 @@ local get_real_time_universal = function (player_name, time_type)
offset = timezone_offset, offset = timezone_offset,
}, },
variables = { variables = {
hours_24 = os.date('!%H', local_timestamp), hours_24 = os.date(force_utc..'%H', local_timestamp),
hours_12 = os.date('!%I', local_timestamp), hours_12 = os.date(force_utc..'%I', local_timestamp),
minutes = os.date('!%M', local_timestamp), minutes = os.date(force_utc..'%M', local_timestamp),
seconds = os.date('!%S', local_timestamp), seconds = os.date(force_utc..'%S', local_timestamp),
dayname = date_names.day, dayname = date_names.day,
monthname = date_names.month, monthname = date_names.month,
year = os.date('!%Y', local_timestamp), year = os.date(force_utc..'%Y', local_timestamp),
month = os.date('!%m', local_timestamp), month = os.date(force_utc..'%m', local_timestamp),
day = os.date('!%d', local_timestamp), day = os.date(force_utc..'%d', local_timestamp),
iso8601_date = os.date('!%Y-%m-%d', local_timestamp), iso8601_date = os.date(force_utc..'%Y-%m-%d', local_timestamp),
iso8601_time = os.date('!%H:%M:%S', local_timestamp), iso8601_time = os.date(force_utc..'%H:%M:%S', local_timestamp),
timestamp = local_timestamp timestamp = local_timestamp
}, },
format = format format = format
@ -253,9 +259,10 @@ end
-- @return table The table containing the times as described -- @return table The table containing the times as described
mtimer.get_times = function (player_name) mtimer.get_times = function (player_name)
return { return {
session_start_time = get_real_time_universal(player_name, 'session'), ingame_time = get_ingame_time(player_name),
session_duration = get_session_duration(player_name),
real_time = get_real_time_universal(player_name, 'real'), real_time = get_real_time_universal(player_name, 'real'),
ingame_time = get_ingame_time(player_name) host_time = get_real_time_universal(player_name, 'host'),
session_start_time = get_real_time_universal(player_name, 'session'),
session_duration = get_session_duration(player_name)
} }
end end

@ -19,6 +19,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.timezone_offset then d.timezone_offset(name) end if fields.timezone_offset then d.timezone_offset(name) end
if fields.ingame_time_format then d.ingame_time_format(name) end if fields.ingame_time_format then d.ingame_time_format(name) end
if fields.real_world_time_format then d.real_world_time_format(name) end if fields.real_world_time_format then d.real_world_time_format(name) end
if fields.host_time_format then d.host_time_format(name) end
if fields.session_start_time_format then if fields.session_start_time_format then
d.session_start_time_format(name) d.session_start_time_format(name)
end end
@ -99,6 +100,16 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
-- Set host time format
if formname == 'mtimer:host_time_format' then
local attr = m.meta.host_time
local value = fields.format or attr.default
meta:set_string(attr.key, value)
if fields.default then meta:set_string(attr.key, attr.default) end
if not fields.quit then d.host_time_format(name) end
end
-- Set session start time format -- Set session start time format
if formname == 'mtimer:session_start_time_format' then if formname == 'mtimer:session_start_time_format' then
local attr = m.meta.session_start_time local attr = m.meta.session_start_time