add HUD element scaling using HUD's size parameter

This commit is contained in:
Dirk Sohler 2020-08-07 05:15:47 +02:00
parent 52a937ef88
commit dc8729c0f5
No known key found for this signature in database
GPG Key ID: B9751241BD7D4E1A
8 changed files with 44 additions and 0 deletions

@ -20,6 +20,7 @@ mtimer = {
visible = { key = 'mtimer:visible', default = 'true' }, visible = { key = 'mtimer:visible', default = 'true' },
position = { key = 'mtimer:position', default = 'bl' }, position = { key = 'mtimer:position', default = 'bl' },
color = { key = 'mtimer:color', default = '#ffffff' }, color = { key = 'mtimer:color', default = '#ffffff' },
hud_element_size = { key = 'mtimer:hud_element_size', default = '1' },
timezone_offset = { key = 'mtimer:timezone_offset', default = '0' }, timezone_offset = { key = 'mtimer:timezone_offset', default = '0' },
ingame_time = { ingame_time = {
key = 'mtimer:ingame_time_format', key = 'mtimer:ingame_time_format',

@ -8,6 +8,7 @@ Position=Ausrichtung
Real-World Time Format=Realzeit-Format Real-World Time Format=Realzeit-Format
Host Time Format=Hostzeit-Format Host Time Format=Hostzeit-Format
Reset Everything=Alles zurücksetzen Reset Everything=Alles zurücksetzen
HUD Element Size=Anzeigegröße
Session Duration Format=Sitzungsdauer-Format Session Duration Format=Sitzungsdauer-Format
Session Start Time Format=Sitzungsstartzeit-Format Session Start Time Format=Sitzungsstartzeit-Format
Timer Format=Timerformat Timer Format=Timerformat

@ -34,6 +34,7 @@ end
-- ht host time d.host_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)
-- hs HUD size d.hud_element_size(name)
-- tf timer format d.timer_format(name) -- tf timer format d.timer_format(name)
-- ------------------------------------------------------------------- -- -------------------------------------------------------------------
-- help Prints the help output showing the parameters -- help Prints the help output showing the parameters
@ -57,6 +58,7 @@ minetest.register_chatcommand('mtimer', {
if action == 'ht' then d.host_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 == 'hs' then d.hud_element_size(name) end
if action == 'tf' then d.timer_format(name) end if action == 'tf' then d.timer_format(name) end
if action == 'help' then if action == 'help' then
@ -70,6 +72,7 @@ minetest.register_chatcommand('mtimer', {
command('ht')..S('Host 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('hs')..S('HUD Element Size'),
command('tf')..S('Timer Format'), command('tf')..S('Timer Format'),
command(' ')..S('Open Main Menu') command(' ')..S('Open Main Menu')
} }

@ -36,6 +36,7 @@ mtimer.dialog.main_menu = function (player_name)
'button[0,0.25;3,0.5;set_visibility;'..S('Visibility')..']', 'button[0,0.25;3,0.5;set_visibility;'..S('Visibility')..']',
'button[0,1;3,0.5;set_position;'..S('Position')..']', 'button[0,1;3,0.5;set_position;'..S('Position')..']',
'button[0,1.75;3,0.5;set_color;'..S('Color')..']', 'button[0,1.75;3,0.5;set_color;'..S('Color')..']',
'button[0,2.5;3,0.5;hud_element_size;'..S('HUD Element Size')..']',
'container_end[]', 'container_end[]',
'container[3.25,0]', 'container[3.25,0]',
'label[0,0;'..S('Time Representation')..']', 'label[0,0;'..S('Time Representation')..']',
@ -232,6 +233,24 @@ mtimer.dialog.session_duration_format = function (player_name)
end end
mtimer.dialog.hud_element_size = function (player_name)
local player = minetest.get_player_by_name(player_name)
local size = player:get_meta():get_string(m.meta.hud_element_size.key)
mtimer.show_formspec('mtimer:hud_element_size', {
title = S('HUD Element Size'),
show_to = player_name,
formspec = {
'field_close_on_enter[hud_element_size;false]',
'button[0,0;0.5,0.5;substract;'..S('-')..']',
'field[0.75,0;0.75,0.5;hud_element_size;;'..size..']',
'button[1.75,0;0.5,0.5;add;'..S('+')..']',
'label[0.025,0.75;'..S('Information')..']'
}
})
end
mtimer.dialog.timer_format = function (player_name) mtimer.dialog.timer_format = function (player_name)
local timer_data = mtimer.get_timer_data(player_name) local timer_data = mtimer.get_timer_data(player_name)

@ -22,6 +22,7 @@ minetest.register_on_joinplayer(function(player)
number = '0x000000', number = '0x000000',
position = {x=0,y=0}, position = {x=0,y=0},
alignment = {x=0,y=0}, alignment = {x=0,y=0},
size = {x=0,y=0},
offset = {x=0,y=0} offset = {x=0,y=0}
})) }))
end) end)

@ -26,6 +26,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.session_duration_format then if fields.session_duration_format then
d.session_duration_format(name) d.session_duration_format(name)
end end
if fields.hud_element_size then d.hud_element_size(name) end
if fields.timer_format then d.timer_format(name) end if fields.timer_format then d.timer_format(name) end
end end
@ -130,6 +131,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
-- Set size (scaling) of the timer HUD element
if formname == 'mtimer:hud_element_size' then
local attr = m.meta.hud_element_size
local value = tonumber(fields.hud_element_size or attr.default)
if fields.add then value = value + 1 end
if fields.substract then value = value - 1 end
if value < 1 then value = 1 end
meta:set_string(attr.key, value)
if fields.default then meta:set_string(attr.key, attr.default) end
if not fields.quit then d.hud_element_size(name) end
end
-- Set timer text -- Set timer text
if formname == 'mtimer:timer_format' then if formname == 'mtimer:timer_format' then
local attr = m.meta.timer_format local attr = m.meta.timer_format

@ -62,6 +62,7 @@ mtimer.update_timer = function (player_name)
local text = mtimer.get_timer_data(player_name).formatted local text = mtimer.get_timer_data(player_name).formatted
local number = meta:get_string(m.color.key):gsub('#', '0x') local number = meta:get_string(m.color.key):gsub('#', '0x')
local orientation = get_hud_positions(meta:get_string(m.position.key)) local orientation = get_hud_positions(meta:get_string(m.position.key))
local size = meta:get_string(m.hud_element_size.key)
if meta:get_string(m.visible.key) == 'false' then text = '' end if meta:get_string(m.visible.key) == 'false' then text = '' end
@ -69,5 +70,6 @@ mtimer.update_timer = function (player_name)
player:hud_change(hud_id, 'number', number) player:hud_change(hud_id, 'number', number)
player:hud_change(hud_id, 'position', orientation.position) player:hud_change(hud_id, 'position', orientation.position)
player:hud_change(hud_id, 'alignment', orientation.alignment) player:hud_change(hud_id, 'alignment', orientation.alignment)
player:hud_change(hud_id, 'size', {x=size, y=size})
player:hud_change(hud_id, 'offset', orientation.offset) player:hud_change(hud_id, 'offset', orientation.offset)
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB