diff options
Diffstat (limited to 'builtin.lua')
-rw-r--r-- | builtin.lua | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/builtin.lua b/builtin.lua new file mode 100644 index 0000000..b82ba41 --- /dev/null +++ b/builtin.lua @@ -0,0 +1,101 @@ +HUD_SB_SIZE = {x = 24, y = 24} + +HUD_HEALTH_POS = {x = 0.5,y = 1} +HUD_HEALTH_OFFSET = {x = -262, y = -87} +HUD_AIR_POS = {x = 0.5, y = 1} +HUD_AIR_OFFSET = {x = 15, y = -87} +HUD_HUNGER_POS = {x = 0.5, y = 1} +HUD_HUNGER_OFFSET = {x = 15, y = -110} +HUD_ARMOR_POS = {x = 0.5, y = 1} +HUD_ARMOR_OFFSET = {x = -262, y = -110} + +-- read hud.conf settings +hud.read_conf() + +local damage_enabled = minetest.setting_getbool("enable_damage") + +hud.show_hunger = minetest.get_modpath("hunger") ~= nil +hud.show_armor = minetest.get_modpath("3d_armor") ~= nil + +-- check if some settings are invalid +local enable_hunger = minetest.setting_getbool("hud_hunger_enable") +if (enable_hunger == true or HUD_ENABLE_HUNGER == true) and not hud.show_hunger then + hud.notify_hunger(5) +end + +if damage_enabled then + hud.register("health", { + hud_elem_type = "statbar", + position = HUD_HEALTH_POS, + size = HUD_SB_SIZE, + text = "hud_heart_fg.png", + number = 20, + alignment = {x=-1,y=-1}, + offset = HUD_HEALTH_OFFSET, + background = "hud_heart_bg.png", + events = { + { + type = "damage", + func = function(player) + hud.change_item(player, "health", {number = player:get_hp()}) + end + } + }, + }) + + hud.register("air", { + hud_elem_type = "statbar", + position = HUD_AIR_POS, + size = HUD_SB_SIZE, + text = "hud_air_fg.png", + number = 0, + alignment = {x=-1,y=-1}, + offset = HUD_AIR_OFFSET, + background = nil, + events = { + { + type = "breath", + func = function(player) + local air = player:get_breath() + if air > 10 then + air = 0 + end + hud.change_item(player, "air", {number = air * 2}) + end + } + }, + }) + + hud.register("armor", { + hud_elem_type = "statbar", + position = HUD_ARMOR_POS, + size = HUD_SB_SIZE, + text = "hud_armor_fg.png", + number = 0, + alignment = {x=-1,y=-1}, + offset = HUD_ARMOR_OFFSET, + background = "hud_armor_bg.png", + autohide_bg = true, + max = 20, + }) + + local start_value = 0 + if show_hunger then + start_value = 20 + end + + hud.register("hunger", { + hud_elem_type = "statbar", + position = HUD_HUNGER_POS, + size = HUD_SB_SIZE, + text = "hud_hunger_fg.png", + number = start_value, + alignment = {x=-1,y=-1}, + offset = HUD_HUNGER_OFFSET, + background = "hud_hunger_bg.png", + --autohide_bg = true, + max = 0, + }) +else + hud.show_armor = false +end |