diff --git a/init.lua b/init.lua index 278f3bf..d9cd1bd 100644 --- a/init.lua +++ b/init.lua @@ -11,11 +11,14 @@ local meseclock_toggle_timer = function (pos) else local node = minetest.get_node(pos) local nodedef = minetest.registered_nodes[node.name] + local meta = minetest.get_meta(pos) + local meta_on_interval = meta:get_int("on_time") or default_on_interval + local meta_off_interval = meta:get_int("off_time") or default_off_interval if (nodedef.__mesecon_state == "on") then - timer:start(default_on_interval) + timer:start(meta_on_interval) else - timer:start(default_off_interval) + timer:start(meta_off_interval) end end end @@ -32,10 +35,35 @@ local meseclock_on_timer = function (pos) meseclock_toggle_timer(pos) end +local meseclock_make_formspec = function (pos) + local meta = minetest.get_meta(pos) + if meta:get_string("on_time") == "" then meta:set_string("on_time", "1") end + if meta:get_string("off_time") == "" then meta:set_string("off_time", "1") end + + meta:set_string( + "formspec", "size[6,2.5]" .. + "field[0.3, 0;3,2;on_time;" .. S("On time (seconds)") .. ":;${on_time}]" .. + "field[3.3, 0;3,2;off_time;" .. S("Off time (seconds)") .. ":;${off_time}]" .. + "button_exit[0.3,0.5;2,3;;" .. S("Save") .. "]" + ) +end + local meseclock_on_construct = function (pos) + meseclock_make_formspec(pos) meseclock_toggle_timer(pos) end +local meseclock_on_receive_fields = function (pos, _, fields, sender) + if not fields.on_time then return end + if minetest.is_protected(pos, sender:get_player_name()) then return end + + local meta = minetest.get_meta(pos) + meta:set_string("on_time", fields.on_time or to_string(default_on_time)) + meta:set_string("off_time", fields.off_time or to_string(default_off_time)) + + meseclock_make_formspec(pos) +end + local node_defaults = { description = S("Mesecons Clock"), drawtype = "nodebox", @@ -60,6 +88,7 @@ local node_defaults = { on_blast = mesecon.on_blastnode, drop = "mesecons_clock:clock_off", on_construct = meseclock_on_construct, + on_receive_fields = meseclock_on_receive_fields, on_punch = function (pos, _, clicker) if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then return diff --git a/locale/template.txt b/locale/template.txt index f064a8c..41d1338 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -1,2 +1,5 @@ # textdomain: mesecons_clock +On time (seconds)= +Off time (seconds)= +Save= Mesecons Clock=