implement position selection

This commit is contained in:
Dirk Sohler 2019-02-17 01:31:10 +01:00
parent 613ebf046d
commit 970bf47ec0
No known key found for this signature in database
GPG Key ID: B9751241BD7D4E1A
6 changed files with 66 additions and 10 deletions

@ -7,6 +7,7 @@ mtimer = {
show_formspec = {},
meta = {
visible = { key = 'mtimer:visible', default = 'true' },
position = { key = 'mtimer:position', default = 'bl' },
}
}

@ -1,7 +1,8 @@
# textdomain: mtimer
# Configuration Selection Menu and chat command help
Toggle Visibility=Sichtbarkeit umschalten
mTimer Configuration=mTimer-Konfiguration
Set Visibility=Sichtbarkeit einstellen
Set Position=Position setzen
Set Color=Farbe einstellen
Timezone Offset=Zeitzonenunterschied
@ -15,6 +16,10 @@ mTimer Visibility=mTimer-Sichtbarkeit
Visible=Sichtbar
Invisible=Unsichtbar
# Positioning
mTimer Position=mTimer-Position
Click the position you want to place the timer at.=Auf die Stelle klicken, an der der Timer angezeigt werden soll.
# Generic Formspec Strings
Default=Standard
Exit=Verlassen

@ -4,15 +4,17 @@ local S = m.translator
mtimer.show_formspec.main_menu = function (player_name)
minetest.show_formspec(player_name, 'mtimer:main_menu', [[
size[4,7.75]
button[0,0;4,1;set_visibility;]]..S('Set Visibility')..[[]
button[0,1;4,1;set_position;]]..S('Set Position')..[[]
button[0,2;4,1;set_color;]]..S('Set Color')..[[]
button[0,3;4,1;timezone_offset;]]..S('Timezone Offset')..[[]
button[0,4;4,1;ingame_time;]]..S('Ingame Time Representation')..[[]
button[0,5;4,1;real_time;]]..S('Real World Time Representation')..[[]
button[0,6;4,1;timer_text;]]..S('Set Timer Text')..[[]
button_exit[0,7;4,1;exit;]]..S('Exit')..[[]
size[4,8.25]
label[0,-0.125;]]..S('mTimer Configuration')..[[]
button[0,0.5;4,1;set_visibility;]]..S('Set Visibility')..[[]
button[0,1.5;4,1;set_position;]]..S('Set Position')..[[]
button[0,2.5;4,1;set_color;]]..S('Set Color')..[[]
button[0,3.5;4,1;timezone_offset;]]..S('Timezone Offset')..[[]
button[0,4.5;4,1;ingame_time;]]..S('Ingame Time Representation')..[[]
button[0,5.5;4,1;real_time;]]..S('Real World Time Representation')..[[]
button[0,6.5;4,1;timer_text;]]..S('Set Timer Text')..[[]
button_exit[0,7.5;4,1;exit;]]..S('Exit')..[[]
]])
end
@ -21,6 +23,7 @@ mtimer.show_formspec.set_visibility = function (player_name)
minetest.show_formspec(player_name, 'mtimer:set_visibility', [[
size[6,2.25]
label[0,-0.125;]]..S('mTimer Visibility')..[[]
button[0,0.5;2,1;visible;]]..S('Visible')..[[]
button[2,0.5;2,1;invisible;]]..S('Invisible')..[[]
button[4,0.5;2,1;default;]]..S('Default')..[[]
@ -28,3 +31,35 @@ mtimer.show_formspec.set_visibility = function (player_name)
button[3,1.5;3,1;back;]]..S('Main Menu')..[[]
]])
end
mtimer.show_formspec.set_position = function (player_name)
minetest.show_formspec(player_name, 'mtimer:set_position', [[
size[8,6.125]
label[0,-0.125;]]..S('mTimer Position')..[[]
image_button[0,0.5;8,4.5 ;mtimer_positions_orientation.png;pos_xx;;;false]
image_button[0,0.5;2.67,1.5;mtimer_transparent.png;pos_tl;;;false]
image_button[2.67,0.5;2.67,1.5;mtimer_transparent.png;pos_tc;;;false]
image_button[5.34,0.5;2.67,1.5;mtimer_transparent.png;pos_tr;;;false]
image_button[0,2;2.67,1.5;mtimer_transparent.png;pos_ml;;;false]
image_button[2.67,2;2.67,1.5;mtimer_transparent.png;pos_mc;;;false]
image_button[5.34,2;2.67,1.5;mtimer_transparent.png;pos_mr;;;false]
image_button[0,3.5;2.67,1.5;mtimer_transparent.png;pos_bl;;;false]
image_button[2.67,3.5;2.67,1.5;mtimer_transparent.png;pos_bc;;;false]
image_button[5.34,3.5;2.67,1.5;mtimer_transparent.png;pos_br;;;false]
label[0,5;]]..S('Click the position you want to place the timer at.')..[[]
button_exit[0,5.5;2,1;exit;]]..S('Exit')..[[]
button[2,5.5;2,1;back;]]..S('Main Menu')..[[]
button[4,5.5;2,1;default;]]..S('Default')..[[]
]])
end

@ -9,6 +9,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
-- Select what formspec to show basing on main menu button
if formname == 'mtimer:main_menu' then
if fields.set_visibility then f.set_visibility(name) end
if fields.set_position then f.set_position(name) end
end
@ -21,6 +22,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
-- Set timer position
if formname == 'mtimer:set_position' then
local attr = m.meta.position
for p,_ in pairs(fields) do
if p == 'default' then
meta:set_string(attr.key, attr.default)
elseif p:gsub('_.*', '') == 'pos' then
local new_pos = p:gsub('pos_', '')
if new_pos ~= 'xx' then meta:set_string(attr.key, new_pos) end
end
end
end
-- Back to menu from all formspecs
if fields.back then f.main_menu(name) end

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 B