From 574a962371034aeaa9e2d48f3e5aa2275abde179 Mon Sep 17 00:00:00 2001 From: Dirk Sohler Date: Fri, 22 Feb 2019 15:50:32 +0100 Subject: [PATCH] implement automatic update via globalstep --- init.lua | 3 ++- locale/mtimer.de.tr | 3 ++- system/formspec/formspec_creation.lua | 5 +++-- system/on_joinplayer.lua | 1 - system/on_receive_fields.lua | 10 +++++++++- system/register_globalstep.lua | 14 ++++++++++++++ system/{timer_update.lua => update_timer.lua} | 2 +- 7 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 system/register_globalstep.lua rename system/{timer_update.lua => update_timer.lua} (97%) diff --git a/init.lua b/init.lua index 37a8759..b81ec60 100644 --- a/init.lua +++ b/init.lua @@ -44,9 +44,10 @@ dofile(syspath..'formspec'..DIR_DELIM..'formspec_creation.lua') -- Load system dofile(syspath..'chat_command.lua') -dofile(syspath..'timer_update.lua') +dofile(syspath..'update_timer.lua') dofile(syspath..'on_receive_fields.lua') dofile(syspath..'on_joinplayer.lua') dofile(syspath..'get_times.lua') dofile(syspath..'get_timer_data.lua') +dofile(syspath..'register_globalstep.lua') diff --git a/locale/mtimer.de.tr b/locale/mtimer.de.tr index 8a27aa9..94efd84 100644 --- a/locale/mtimer.de.tr +++ b/locale/mtimer.de.tr @@ -11,6 +11,7 @@ Real-World Time Format=Realzeit-Format Session Start Time Format=Sitzungsstartzeit-Format Session Duration Format=Sitzungsdauer-Format Timer Format=Timerformat +Reset Everything=Alles zurücksetzen Open Main Menu=Hauptmenü öffnen # Visibility @@ -20,7 +21,7 @@ Invisible=Unsichtbar # Positioning Click the position you want to place the timer at.=Auf die Stelle klicken, an der der Timer angezeigt werden soll. -# Set Color +# Color Use `@1` format only!=Ausschließlich `@1`-Format benutzen! # Timezone Offset diff --git a/system/formspec/formspec_creation.lua b/system/formspec/formspec_creation.lua index d146cf2..38256f7 100644 --- a/system/formspec/formspec_creation.lua +++ b/system/formspec/formspec_creation.lua @@ -6,7 +6,7 @@ local fe = minetest.formspec_escape mtimer.show_formspec.main_menu = function (player_name) minetest.show_formspec(player_name, 'mtimer:main_menu', [[ - size[4,10.25] + size[4,11.25] label[0,-0.125;]]..S('mTimer Configuration')..[[] button[0,0.5;4,1;set_visibility;]]..S('Visibility')..[[] @@ -18,7 +18,8 @@ mtimer.show_formspec.main_menu = function (player_name) button[0,6.5;4,1;session_start_time_format;]]..S('Session Start Time Format')..[[] button[0,7.5;4,1;session_duration_format;]]..S('Session Duration Format')..[[] button[0,8.5;4,1;timer_format;]]..S('Timer Format')..[[] - button_exit[0,9.5;4,1;exit;]]..S('Exit')..[[] + button[0,9.5;4,1;reset_everything;]]..S('Reset Everything')..[[] + button_exit[0,10.5;4,1;exit;]]..S('Exit')..[[] ]]) end diff --git a/system/on_joinplayer.lua b/system/on_joinplayer.lua index 6ff5905..6d42500 100644 --- a/system/on_joinplayer.lua +++ b/system/on_joinplayer.lua @@ -16,7 +16,6 @@ minetest.register_on_joinplayer(function(player) number = '0x000000', position = {x=0,y=0}, alignment = {x=0,y=0}, - direction = 0, offset = {x=0,y=0} })) end) diff --git a/system/on_receive_fields.lua b/system/on_receive_fields.lua index b77c863..81d894a 100644 --- a/system/on_receive_fields.lua +++ b/system/on_receive_fields.lua @@ -132,6 +132,14 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Back to menu from all formspecs and conditionally update timer if fields.main_menu then f.main_menu(name) end - if formname ~= 'mtimer:main_menu' then mtimer.timer_update(name) end + if formname ~= 'mtimer:main_menu' then m.update_timer(name) end + + + -- Reset everything + if fields.reset_everything then + for _,def in pairs(m.meta) do + meta:set_string(def.key, def.default) + end + end end) diff --git a/system/register_globalstep.lua b/system/register_globalstep.lua new file mode 100644 index 0000000..592810d --- /dev/null +++ b/system/register_globalstep.lua @@ -0,0 +1,14 @@ +local m = mtimer +local connected_players = minetest.get_connected_players +local timer = 0 + +minetest.register_globalstep(function(dtime) + timer = timer + dtime; + if timer < 1 then return end + + for _,player in pairs(connected_players()) do + m.update_timer(player:get_player_name()) + end + + timer = 0 +end) diff --git a/system/timer_update.lua b/system/update_timer.lua similarity index 97% rename from system/timer_update.lua rename to system/update_timer.lua index fadbc33..ec99aa8 100644 --- a/system/timer_update.lua +++ b/system/update_timer.lua @@ -20,7 +20,7 @@ local get_hud_positions = function (pos) end -mtimer.timer_update = function (player_name) +mtimer.update_timer = function (player_name) local player = minetest.get_player_by_name(player_name) local meta = player:get_meta() local m = m.meta