Commit
Add DPI support for statbar Move heart+bubble bar to Lua HUD Add statbar size (based upon an idea by blue42u) Add support for customizing breath and statbar
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
|
||
local health_bar_definition = | ||
{ | ||
hud_elem_type = "statbar", | ||
position = { x=0.5, y=1 }, | ||
text = "heart.png", | ||
number = 20, | ||
direction = 0, | ||
size = { x=24, y=24 }, | ||
offset = { x=(-10*24)-25, y=-(48+24+10)}, | ||
} | ||
|
||
local breath_bar_definition = | ||
{ | ||
hud_elem_type = "statbar", | ||
position = { x=0.5, y=1 }, | ||
text = "bubble.png", | ||
number = 20, | ||
direction = 0, | ||
size = { x=24, y=24 }, | ||
offset = {x=25,y=-(48+24+10)}, | ||
} | ||
|
||
local hud_ids = {} | ||
|
||
local function initialize_builtin_statbars(player) | ||
|
||
if not player:is_player() then | ||
return | ||
end | ||
|
||
local name = player:get_player_name() | ||
|
||
if name == "" then | ||
return | ||
end | ||
|
||
if (hud_ids[name] == nil) then | ||
hud_ids[name] = {} | ||
end | ||
|
||
if player:hud_get_flags().healthbar then | ||
if hud_ids[name].id_healthbar == nil then | ||
health_bar_definition.number = player:get_hp() | ||
hud_ids[name].id_healthbar = player:hud_add(health_bar_definition) | ||
end | ||
else | ||
if hud_ids[name].id_healthbar ~= nil then | ||
player:hud_remove(hud_ids[name].id_healthbar) | ||
hud_ids[name].id_healthbar = nil | ||
end | ||
end | ||
|
||
if (player:get_breath() < 11) then | ||
if player:hud_get_flags().breathbar then | ||
if hud_ids[name].id_breathbar == nil then | ||
hud_ids[name].id_breathbar = player:hud_add(breath_bar_definition) | ||
end | ||
else | ||
if hud_ids[name].id_breathbar ~= nil then | ||
player:hud_remove(hud_ids[name].id_breathbar) | ||
hud_ids[name].id_breathbar = nil | ||
end | ||
end | ||
elseif hud_ids[name].id_breathbar ~= nil then | ||
player:hud_remove(hud_ids[name].id_breathbar) | ||
hud_ids[name].id_breathbar = nil | ||
end | ||
end | ||
|
||
local function cleanup_builtin_statbars(player) | ||
|
||
if not player:is_player() then | ||
return | ||
end | ||
|
||
local name = player:get_player_name() | ||
|
||
if name == "" then | ||
return | ||
end | ||
|
||
hud_ids[name] = nil | ||
end | ||
|
||
local function player_event_handler(player,eventname) | ||
assert(player:is_player()) | ||
|
||
local name = player:get_player_name() | ||
|
||
if name == "" then | ||
return | ||
end | ||
|
||
if eventname == "health_changed" then | ||
initialize_builtin_statbars(player) | ||
|
||
if hud_ids[name].id_healthbar ~= nil then | ||
player:hud_change(hud_ids[name].id_healthbar,"number",player:get_hp()) | ||
return true | ||
end | ||
end | ||
|
||
if eventname == "breath_changed" then | ||
initialize_builtin_statbars(player) | ||
|
||
if hud_ids[name].id_breathbar ~= nil then | ||
player:hud_change(hud_ids[name].id_breathbar,"number",player:get_breath()*2) | ||
return true | ||
end | ||
end | ||
|
||
if eventname == "hud_changed" then | ||
initialize_builtin_statbars(player) | ||
return true | ||
end | ||
|
||
return false | ||
end | ||
|
||
function minetest.hud_replace_builtin(name, definition) | ||
|
||
if definition == nil or | ||
type(definition) ~= "table" or | ||
definition.hud_elem_type ~= "statbar" then | ||
return false | ||
end | ||
|
||
if name == "health" then | ||
health_bar_definition = definition | ||
|
||
for name,ids in pairs(hud_ids) do | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
ShadowNinja
Member
|
||
local player = minetest.get_player_by_name(name) | ||
if player and hud_ids[name].id_healthbar then | ||
player:hud_remove(hud_ids[name].id_healthbar) | ||
initialize_builtin_statbars(player) | ||
end | ||
end | ||
return true | ||
end | ||
|
||
if name == "breath" then | ||
breath_bar_definition = definition | ||
|
||
for name,ids in pairs(hud_ids) do | ||
local player = minetest.get_player_by_name(name) | ||
if player and hud_ids[name].id_breathbar then | ||
player:hud_remove(hud_ids[name].id_breathbar) | ||
initialize_builtin_statbars(player) | ||
end | ||
end | ||
return true | ||
end | ||
|
||
return false | ||
end | ||
|
||
minetest.register_on_joinplayer(initialize_builtin_statbars) | ||
minetest.register_on_leaveplayer(cleanup_builtin_statbars) | ||
minetest.register_playerevent(player_event_handler) |
4 comments
on commit d3ee617
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also the health bar is shown aswell when damage is disabled. You did no tests before merging, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0.4.9 servers show no health bar, regardless of texture pack. This makes PvP quite trickier. ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After some time the whole hud is hidden, not only the hearts.
And here you try to change the healthbar for all players with name "health"...works great -.-