Display both compass and 24-hour clock.
10
README.md
@ -1,7 +1,7 @@
|
||||
HUD Compass [hud_compass]
|
||||
-------------------------
|
||||
|
||||
A Minetest mod to optionally place a HUD compass on the screen.
|
||||
A Minetest mod to optionally place a HUD compass and 24-hour clock on the screen.
|
||||
|
||||
By David G (kestral246)
|
||||
|
||||
@ -10,13 +10,13 @@ By David G (kestral246)
|
||||
How to enable
|
||||
-------------
|
||||
|
||||
This mod defaults to not displaying compass. To enable, use the chat command:
|
||||
This mod defaults to not displaying compass and clock. To enable, use the chat command:
|
||||
|
||||
"/compass" -> By default this places a compass in the bottom right corner of the screen.
|
||||
"/compass" -> By default this places a compass and clock in the bottom right corner of the screen.
|
||||
|
||||
Repeated use of this command will toggle the compass display off and on.
|
||||
Repeated use of this command will toggle the display of the compass and clock off and on.
|
||||
|
||||
**New:** When given with an argument, the position of the compass can be changed. This is particularly useful with Android clients, where the bottom right corner of the screen has the jump button.
|
||||
**New:** When given with an argument, the position of the compass and clock can be changed. This is particularly useful with Android clients, where the bottom right corner of the screen has the jump button.
|
||||
|
||||
"/compass 1" -> top right corner
|
||||
"/compass 2" -> bottom right corner
|
||||
|
59
init.lua
@ -1,8 +1,8 @@
|
||||
-- hud_compass
|
||||
-- Optionally place a compass on the screen.
|
||||
-- Optionally place a compass and 24-hour clock on the screen.
|
||||
-- A HUD version of my realcompass mod.
|
||||
-- By David_G (kestral246@gmail.com)
|
||||
-- 2019-12-24
|
||||
-- 2019-12-29
|
||||
|
||||
local hud_compass = {}
|
||||
local storage = minetest.get_mod_storage()
|
||||
@ -13,7 +13,13 @@ local storage = minetest.get_mod_storage()
|
||||
|
||||
local default_corner = -2 -- SE corner, off by default
|
||||
|
||||
local lookup = {
|
||||
local lookup_compass = {
|
||||
{hud_elem_type="image", text="", position={x=1,y=0}, scale={x=4,y=4}, alignment={x=-1,y=1}, offset={x=-76,y=4}},
|
||||
{hud_elem_type="image", text="", position={x=1,y=1}, scale={x=4,y=4}, alignment={x=-1,y=-1}, offset={x=-76,y=-4}},
|
||||
{hud_elem_type="image", text="", position={x=0,y=1}, scale={x=4,y=4}, alignment={x=1,y=-1}, offset={x=76,y=-4}},
|
||||
{hud_elem_type="image", text="", position={x=0,y=0}, scale={x=4,y=4}, alignment={x=1,y=1}, offset={x=76,y=4}}
|
||||
}
|
||||
local lookup_clock = {
|
||||
{hud_elem_type="image", text="", position={x=1,y=0}, scale={x=4,y=4}, alignment={x=-1,y=1}, offset={x=-8,y=4}},
|
||||
{hud_elem_type="image", text="", position={x=1,y=1}, scale={x=4,y=4}, alignment={x=-1,y=-1}, offset={x=-8,y=-4}},
|
||||
{hud_elem_type="image", text="", position={x=0,y=1}, scale={x=4,y=4}, alignment={x=1,y=-1}, offset={x=8,y=-4}},
|
||||
@ -30,8 +36,10 @@ minetest.register_on_joinplayer(function(player)
|
||||
end
|
||||
end
|
||||
hud_compass[pname] = {
|
||||
id = player:hud_add(lookup[math.abs(corner)]),
|
||||
last_image = -1,
|
||||
id_compass = player:hud_add(lookup_compass[math.abs(corner)]),
|
||||
last_image_compass = -1,
|
||||
id_clock = player:hud_add(lookup_clock[math.abs(corner)]),
|
||||
last_image_clock = -1,
|
||||
state = corner,
|
||||
}
|
||||
end)
|
||||
@ -44,23 +52,30 @@ minetest.register_chatcommand("compass", {
|
||||
local player = minetest.get_player_by_name(pname)
|
||||
if params and string.len(params) > 0 then -- includes corner parameter
|
||||
local corner = tonumber(string.match(params, "^%d$"))
|
||||
if corner and corner == 0 then -- disable compass
|
||||
player:hud_change(hud_compass[pname].id, "text", "") -- blank hud
|
||||
hud_compass[pname].last_image = -1
|
||||
if corner and corner == 0 then -- disable compass and clock
|
||||
player:hud_change(hud_compass[pname].id_compass, "text", "") -- blank hud compass
|
||||
hud_compass[pname].last_image_compass = -1
|
||||
player:hud_change(hud_compass[pname].id_clock, "text", "") -- blank hud clock
|
||||
hud_compass[pname].last_image_clock = -1
|
||||
hud_compass[pname].state = -1 * math.abs(hud_compass[pname].state)
|
||||
storage:set_string(pname, hud_compass[pname].state)
|
||||
elseif corner and corner > 0 and corner <= 4 then -- enable compass to given corner
|
||||
player:hud_remove(hud_compass[pname].id) -- remove old hud
|
||||
hud_compass[pname].id = player:hud_add(lookup[corner]) -- place new hud at requested corner
|
||||
hud_compass[pname].last_image = -1
|
||||
elseif corner and corner > 0 and corner <= 4 then -- enable compass and clock to given corner
|
||||
player:hud_remove(hud_compass[pname].id_compass) -- remove old hud compass
|
||||
player:hud_remove(hud_compass[pname].id_clock) -- remove old hud clock
|
||||
hud_compass[pname].id_compass = player:hud_add(lookup_compass[corner]) -- place new hud compass at requested corner
|
||||
hud_compass[pname].last_image_compass = -1
|
||||
hud_compass[pname].id_clock = player:hud_add(lookup_clock[corner]) -- place new hud clock at requested corner
|
||||
hud_compass[pname].last_image_clock = -1
|
||||
hud_compass[pname].state = corner
|
||||
storage:set_string(pname, corner)
|
||||
end
|
||||
else -- just toggle hud
|
||||
if hud_compass[pname].state > 0 then -- is enabled
|
||||
player:hud_change(hud_compass[pname].id_compass, "text", "") -- blank hud compass
|
||||
hud_compass[pname].last_image_compass = -1
|
||||
player:hud_change(hud_compass[pname].id_clock, "text", "") -- blank hud clock
|
||||
hud_compass[pname].last_image_clock = -1
|
||||
hud_compass[pname].state = -1 * hud_compass[pname].state -- toggle to disabled
|
||||
hud_compass[pname].last_image = -1 -- reset initial direction
|
||||
player:hud_change(hud_compass[pname].id, "text", "") -- blank hud
|
||||
storage:set_string(pname, hud_compass[pname].state)
|
||||
else -- is disabled
|
||||
hud_compass[pname].state = -1 * hud_compass[pname].state -- toggle to enabled
|
||||
@ -83,13 +98,21 @@ minetest.register_globalstep(function(dtime)
|
||||
local pname = player:get_player_name()
|
||||
local dir = player:get_look_horizontal()
|
||||
local angle_relative = math.deg(dir)
|
||||
local image = math.floor((angle_relative/22.5) + 0.5)%16
|
||||
local image_compass = math.floor((angle_relative/22.5) + 0.5)%16
|
||||
local image_clock = math.floor(24 * minetest.get_timeofday())
|
||||
|
||||
if hud_compass[pname].state > 0 and image ~= hud_compass[pname].last_image then
|
||||
local rc = player:hud_change(hud_compass[pname].id, "text", "realcompass_"..image..".png")
|
||||
if hud_compass[pname].state > 0 and image_compass ~= hud_compass[pname].last_image_compass then
|
||||
local rc = player:hud_change(hud_compass[pname].id_compass, "text", "realcompass_"..image_compass..".png")
|
||||
-- Check return code, seems to fix occasional startup glitch.
|
||||
if rc == 1 then
|
||||
hud_compass[pname].last_image = image
|
||||
hud_compass[pname].last_image_compass = image_compass
|
||||
end
|
||||
end
|
||||
if hud_compass[pname].state > 0 and image_clock ~= hud_compass[pname].last_image_clock then
|
||||
local rc = player:hud_change(hud_compass[pname].id_clock, "text", "hud_24hr_clock_"..image_clock..".png")
|
||||
-- Check return code, seems to fix occasional startup glitch.
|
||||
if rc == 1 then
|
||||
hud_compass[pname].last_image_clock = image_clock
|
||||
end
|
||||
end
|
||||
end
|
||||
|
2
mod.conf
@ -1,2 +1,2 @@
|
||||
name = hud_compass
|
||||
description = Optionally place a HUD compass on the screen.
|
||||
description = Optionally place a HUD compass and 24-hour clock on the screen.
|
||||
|
BIN
screenshot.png
Before Width: | Height: | Size: 350 KiB After Width: | Height: | Size: 371 KiB |
BIN
textures/hud_24hr_clock_0.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_1.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_10.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
textures/hud_24hr_clock_11.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_12.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_13.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_14.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_15.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_16.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_17.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_18.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_19.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_2.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_20.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_21.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_22.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_23.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_3.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_4.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_5.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_6.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_7.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_8.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
textures/hud_24hr_clock_9.png
Normal file
After Width: | Height: | Size: 2.4 KiB |