Compare commits

...

5 Commits

Author SHA1 Message Date
BlockMen c58f7034e6 Fixed armor not being updated correct due armor mod changes
- Fixes #2
2016-02-15 14:19:00 +01:00
BlockMen fb0a4f2f10 Push to 2.1.4 2015-10-14 09:15:45 +02:00
BlockMen 44d40a92ae Fix unhandled exception 2015-10-14 09:15:35 +02:00
BlockMen d5254a20f5 Push to Version 2.1.3 2015-07-15 01:41:31 +02:00
BlockMen ec9f4b2875 Add hud.swap_statbar(), fixes BlockMen/hunger#2 2015-07-15 01:16:52 +02:00
6 changed files with 179 additions and 124 deletions

View File

@ -1,13 +1,18 @@
function hud.register(name, def)
hud.register(name, def)
-- name: statbar name (health, air, hunger, armor already used by default)
-- def: <HUD item definition> (see below)
hud.change_item(player, name, def)
-- player: player object
-- name: statbar name (health, air, hunger, armor already used by default)
-- name: statbar name
-- def: table containing new values
-- currently supported: number, text and offset
hud.swap_statbar(player, name1, name2) -- swaps position and offset of statbar with name1 with statbar with name2
-- player: player object
-- name1: statbar name
-- name2: statbar name
hud.remove_item(player, name)
HUD item definition

View File

@ -1,8 +1,8 @@
Minetest mod "Better HUD"
=========================
Version: 2.1.2
Version: 2.1.5
(c) Copyright BlockMen (2013-2015)
(c) Copyright BlockMen (2013-2016)
About this mod:
@ -26,7 +26,7 @@ This mod supports the 3d_armor mod by stu (https://github.com/stujones11/minetes
License:
~~~~~~~~
(c) Copyright BlockMen (2013-2015)
(c) Copyright BlockMen (2013-2016)
Code:

80
api.lua
View File

@ -66,6 +66,59 @@ function hud.register(name, def)
return true
end
-- swaps stabar positions
function hud.swap_statbar(player, item1, item2)
if not player or not item1 or not item2 then
throw_error("Not enough parameters given to swap statbars")
return false
end
local def1 = items[item1] or nil
local def2 = items[item2] or nil
if not def1 or not def2 then
throw_error("Can't swap statbars. Given statbars are not correct")
return false
end
local pos_swap = false
local p_name = player:get_player_name()
local elem1 = hud_id[p_name.."_"..item1]
local elem2 = hud_id[p_name.."_"..item2]
if not elem1 or not elem2 or not elem1.id or not elem2.id then
return false
end
player:hud_change(elem2.id, "offset", def1.offset)
player:hud_change(elem1.id, "offset", def2.offset)
if def1.position.x ~= def2.position.x or def1.position.y ~= def2.position.y then
player:hud_change(elem2.id, "position", def1.position)
player:hud_change(elem1.id, "position", def2.position)
pos_swap = true
end
-- do the items have backgrounds? if so, swap them aswell
local bg1 = hud_id[p_name.."_"..item1.."_bg"] or nil
local bg2 = hud_id[p_name.."_"..item2.."_bg"] or nil
if bg1 ~= nil and bg1.id then
player:hud_change(bg1.id, "offset", def2.offset)
if pos_swap == true then
player:hud_change(bg1.id, "position", def2.position)
end
end
if bg2 ~= nil and bg2.id then
player:hud_change(bg2.id, "offset", def1.offset)
if pos_swap == true then
player:hud_change(bg2.id, "position", def1.position)
end
end
return true
end
function hud.change_item(player, name, def)
if not player or not player:is_player() or not name or not def then
throw_error("Not enough parameters given to change HUD item")
@ -106,6 +159,7 @@ function hud.change_item(player, name, def)
if bg and bg.max and bg.max < 1 and def.max and def.max > bg.max then
player:hud_change(bg.id, "number", def.max)
bg.max = def.max
bg.number = def.max
end
end
end
@ -119,27 +173,9 @@ function hud.change_item(player, name, def)
if def.offset and elem.offset then
if def.item_name and def.offset == "item" then
local i_name2 = player:get_player_name().."_"..def.item_name
local elem2 = hud_id[i_name2]
if elem2 then
local p2 = elem2.offset
local p1 = elem.offset
player:hud_change(elem2.id, "offset", p1)
player:hud_change(elem.id, "offset", p2)
elem2.offset = p1
elem.offset = p2
if elem.background then
local elem3 = hud_id[i_name.."_bg"]
if elem3 and elem3.offset then
player:hud_change(elem3.id, "offset", p2)
elem3.offset = p2
local elem4 = hud_id[i_name2.."_bg"]
if elem4 and elem4.offset then
player:hud_change(elem4.id, "offset", p1)
elem4.offset = p1
end
end
end
-- for legacy reasons
if def.item_name then
hud.swap_statbar(player, name, def.item_name)
end
else
player:hud_change(elem.id, "offset", def.offset)
@ -190,7 +226,7 @@ minetest.register_on_joinplayer(function(player)
hud_flags.breathbar = false
player:hud_set_flags(hud_flags)
-- now add the backgrounds (e.g. for statbars)
-- now add the backgrounds for statbars
for _,item in pairs(sb_bg) do
add_hud_item(player, _.."_bg", item)
end

View File

@ -1,3 +1,16 @@
2.1.5
-----
- Fixed armor not being updated correct due armor mod changes
2.1.4
-----
- Fixed unhandled exception in hud.swap_statbar()
2.1.3
-----
- Added hud.swap_statbar() and fix wrong behavior of previous workaround
- Fixed missing background of some statbars in multiplayer
2.1.2
-----
- Fixed crash caused by animated nodes (reported by Krock)

View File

@ -4,7 +4,7 @@ end
if hud.show_armor then
local shields = minetest.get_modpath("shields") ~= nil
local armor_org_func = armor.update_armor
local armor_org_func = armor.set_player_armor
local function get_armor_lvl(def)
-- items/protection based display
@ -22,7 +22,7 @@ if hud.show_armor then
return tonumber(20 * ret)
end
function armor.update_armor(self, player)
function armor.set_player_armor(self, player)
armor_org_func(self, player)
local name = player:get_player_name()
local def = self.def
@ -55,6 +55,7 @@ if not hud.show_hunger then
function hud.save_hunger()
hud.notify_hunger(1, true)
end
function hud.load_hunger(player)
hud.notify_hunger(1, true)
end