init
This commit is contained in:
commit
2d26db1c5b
38 changed files with 2837 additions and 0 deletions
85
interoperability/hudbars.lua
Normal file
85
interoperability/hudbars.lua
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
-- HUD bars
|
||||
--
|
||||
-- Author Wuzzy
|
||||
-- Forums https://forum.luanti.org/viewtopic.php?t=11153
|
||||
-- VCS https://repo.or.cz/w/minetest_hudbars.git
|
||||
|
||||
|
||||
-- Localize and Prepare
|
||||
local a = hunger_ng.interoperability.attributes
|
||||
local s = hunger_ng.interoperability.settings
|
||||
local S = hunger_ng.interoperability.translator
|
||||
local get_data = hunger_ng.interoperability.get_data
|
||||
local set_data = hunger_ng.interoperability.set_data
|
||||
local bar_id = 'hungernghudbar'
|
||||
local hudbar_image_filters = '^[noalpha^[colorize:#c17d11ff^[resize:2x16'
|
||||
local hudbar_image = s.hunger_bar.image..hudbar_image_filters
|
||||
|
||||
|
||||
-- register the hud bar
|
||||
hb.register_hudbar(
|
||||
bar_id,
|
||||
'0xFFFFFF',
|
||||
S('Satiation'),
|
||||
{
|
||||
bar = hudbar_image,
|
||||
icon = s.hunger_bar.image
|
||||
},
|
||||
s.hunger.maximum,
|
||||
s.hunger.maximum,
|
||||
false
|
||||
)
|
||||
|
||||
|
||||
-- Remove normal hunger bar and add hudbar version of it
|
||||
core.register_on_joinplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
local hud_id = tonumber(get_data(player_name, a.hunger_bar_id))
|
||||
local current_hunger = get_data(player_name, a.hunger_value)
|
||||
local hunger_ceiled = math.ceil(current_hunger)
|
||||
|
||||
if s.hunger_bar.use then
|
||||
-- Since we don’t have register_after_joinplayer() we need to delay
|
||||
-- the removal of the default hunger bar because without delay this
|
||||
-- results in a race condition with Hunger NG’s register_on_joinplayer
|
||||
-- callback that defines and sets the default hunger bar.
|
||||
--
|
||||
-- If for some reason the hud bar is not hidden try raising the delay
|
||||
-- before the bar is hidden by adding hunger_ng_i14y_hudbars_delay to
|
||||
-- your configuration and setting it to a value of your liking (the
|
||||
-- value is giving in seconds and decimals are allowed).
|
||||
local parameter_name = 'hunger_ng_i14y_hudbars_delay'
|
||||
local delay = core.settings:get(parameter_name) or 0.5
|
||||
|
||||
if core.settings:get('hunger_ng_debug_mode') and delay ~= 0.5 then
|
||||
local message = 'Using delay of +d to hide the hunger bar for +p.'
|
||||
core.log('action', '[hungerng] '..message:gsub('%+%a+', {
|
||||
['+d'] = delay..'s',
|
||||
['+p'] = player_name
|
||||
}))
|
||||
end
|
||||
|
||||
core.after(delay, function () player:hud_remove(hud_id) end)
|
||||
end
|
||||
|
||||
hb.init_hudbar(player, bar_id, hunger_ceiled, s.hunger.maximum, false)
|
||||
end)
|
||||
|
||||
|
||||
-- Globalstep for updating the hundbar version of the hunger bar without
|
||||
-- any additional code outside the interoperability system.
|
||||
local hudbars_timer = 0
|
||||
core.register_globalstep(function(dtime)
|
||||
hudbars_timer = hudbars_timer + dtime
|
||||
if hudbars_timer >= 1 then
|
||||
hudbars_timer = 0
|
||||
for _,player in ipairs(core.get_connected_players()) do
|
||||
if player ~= nil then
|
||||
local playername = player:get_player_name()
|
||||
local hunger = get_data(playername, a.hunger_value)
|
||||
local ceiled = math.ceil(hunger)
|
||||
hb.change_hudbar(player, bar_id, ceiled, s.hunger.maximum)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue