diff --git a/README.md b/README.md index 2867f10..4c4d776 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,8 @@ The following tools are available: To toggle between 12h and 24h mode for the displayed time, wield any device which is capable of displaying the time and press the left mouse button. -## Configuration recommendations +## Configuration +### Recommendations Note that in Minetest, it is also possible to access the coordinates, angles, etc. through the debug menu, but this would be generally considered cheating as this defeats the purpose of this mod. Try to resist this urge. @@ -45,6 +46,9 @@ following line into your `minetest.conf`: keymap_toggle_debug = +### HUD text position +The text position can be configured by using Minetest's settings system. See +the advanced settings menu for more information. ## Crafting recipes Crafting recipes are only available when the default mod is used. diff --git a/init.lua b/init.lua index 5a6283a..3d8f86b 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,26 @@ orienteering.playerhuds = {} orienteering.settings = {} orienteering.settings.speed_unit = S("m/s") orienteering.settings.length_unit = S("m") +orienteering.settings.hud_pos = { x = 0.5, y = 0 } +orienteering.settings.hud_offset = { x = 0, y = 15 } +orienteering.settings.hud_alignment = { x = 0, y = 0 } + +local set = tonumber(minetest.setting_get("orienteering_hud_pos_x")) +if set then orienteering.settings.hud_pos.x = set end +set = tonumber(minetest.setting_get("orienteering_hud_pos_y")) +if set then orienteering.settings.hud_pos.y = set end +set = tonumber(minetest.setting_get("orienteering_hud_offset_x")) +if set then orienteering.settings.hud_offset.x = set end +set = tonumber(minetest.setting_get("orienteering_hud_offset_y")) +if set then orienteering.settings.hud_offset.y = set end +set = minetest.setting_get("orienteering_hud_alignment") +if set == "left" then + orienteering.settings.hud_alignment.x = 1 +elseif set == "center" then + orienteering.settings.hud_alignment.x = 0 +elseif set == "right" then + orienteering.settings.hud_alignment.x = -1 +end local o_lines = 4 -- Number of lines in HUD @@ -182,6 +202,8 @@ function update_automapper(player) end end + + function init_hud(player) update_automapper(player) local name = player:get_player_name() @@ -190,9 +212,9 @@ function init_hud(player) orienteering.playerhuds[name]["o_line"..i] = player:hud_add({ hud_elem_type = "text", text = "", - position = { x = 0.5, y = 0.001 }, - offset = { x = 0, y = 0+20*i }, - alignment = { x = 0, y = 0 }, + position = orienteering.settings.hud_pos, + offset = { x = orienteering.settings.hud_offset.x, y = orienteering.settings.hud_offset.y + 20*(i-1) }, + alignment = orienteering.settings.hud_alignment, number = 0xFFFFFF, scale= { x = 100, y = 20 }, }) diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..a3b5c81 --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,14 @@ +# Horizontal main position (x) of the Orienteering text. +# 0.0 is left, 1.0 is right. +orienteering_hud_pos_x (Horizontal Orienteering text screen position) float 0.5 0.0 1.0 +# Vertical main position (y) of the Orienteering text. +# 0.0 is top, 1.0 is bottom. +orienteering_hud_pos_y (Vertical Orienteering text screen position) float 0.0 0.0 1.0 + +# Horizontal offset (x) of the Orienteering text from the screen position. +orienteering_hud_offset_x (Horizontal Orienteering text offset) int 0 +# Vertical offset (y) of the Orienteering text from the screen position. +orienteering_hud_offset_y (Vertical Orienteering text offset) int 15 + +# Alignment of the Orienteering text. +orienteering_hud_alignment (Orienteering text alignment) enum center left,center,right