Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
a41453964a | |||
5d65623d90 | |||
f6d539249e | |||
746945dd0f | |||
37eff8b2d2 | |||
844fff43de | |||
a250d2a350 | |||
7993feac07 | |||
b19b5f090a | |||
9a8a3f0f8c | |||
2eb2df946b | |||
2ffcd94dd6 | |||
8d3fa950f8 | |||
332aa18452 | |||
99ebd71da7 | |||
699e356609 | |||
8c80745ecb | |||
1e3def3cfa | |||
48d9fd6a12 |
2
API.md
@ -70,6 +70,8 @@ for more information.
|
||||
* `format_string_config`: Required if `format_string` is set. This allows to change which parameters to use in the format string. It's a table with these fields:
|
||||
* `textdomain`: Text domain of the format string, used by `minetest.translate`
|
||||
* `order`: Table that contains the order of the placeholders. It's also possible to remove placeholders. Default order: `{ "label", "value", "max_value" }`
|
||||
* `format_value`: Format string to apply when displaying `value`. Syntax is same as in `string.format`. Default: `"%d"`
|
||||
* `format_max_value`: Same as `format_value` but is applied to `max_value`
|
||||
|
||||
#### Example
|
||||
Example (mostly) from `hbarmor` mod:
|
||||
|
@ -11,7 +11,8 @@ this mod will place them accordingly.
|
||||
position should be displayed correctly on every screen size.
|
||||
|
||||
## Current version
|
||||
The current version is 2.0.0.
|
||||
The current version is 2.3.0.
|
||||
It works for Minetest 5.3.0.
|
||||
|
||||
This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer
|
||||
standard.
|
||||
@ -38,6 +39,8 @@ Translations:
|
||||
* Dutch: kingoscargames
|
||||
* Italian: Hamlet
|
||||
* Malay: muhdnurhidayat
|
||||
* Russian: Imk
|
||||
* Spanish: wuniversales
|
||||
|
||||
This program is free software. It comes without any warranty, to
|
||||
the extent permitted by applicable law. You can redistribute it
|
||||
|
68
init.lua
@ -58,9 +58,17 @@ local function make_label(format_string, format_string_config, label, start_valu
|
||||
if order[o] == "label" then
|
||||
table.insert(params, label)
|
||||
elseif order[o] == "value" then
|
||||
table.insert(params, start_value)
|
||||
if format_string_config.format_value then
|
||||
table.insert(params, string.format(format_string_config.format_value, start_value))
|
||||
else
|
||||
table.insert(params, start_value)
|
||||
end
|
||||
elseif order[o] == "max_value" then
|
||||
table.insert(params, max_value)
|
||||
if format_string_config.format_max_value then
|
||||
table.insert(params, string.format(format_string_config.format_max_value, max_value))
|
||||
else
|
||||
table.insert(params, max_value)
|
||||
end
|
||||
end
|
||||
end
|
||||
local ret
|
||||
@ -148,7 +156,16 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
||||
format_string = N("@1: @2/@3")
|
||||
end
|
||||
if format_string_config == nil then
|
||||
format_string_config = { order = { "label", "value", "max_value" } }
|
||||
format_string_config = {}
|
||||
end
|
||||
if format_string_config.order == nil then
|
||||
format_string_config.order = { "label", "value", "max_value" }
|
||||
end
|
||||
if format_string_config.format_value == nil then
|
||||
format_string_config.format_value = "%d"
|
||||
end
|
||||
if format_string_config.format_max_value == nil then
|
||||
format_string_config.format_max_value = "%d"
|
||||
end
|
||||
|
||||
hudtable.add_all = function(player, hudtable, start_value, start_max, start_hidden)
|
||||
@ -183,6 +200,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
||||
text = "hudbars_bar_background.png",
|
||||
alignment = {x=1,y=1},
|
||||
offset = { x = offset.x - 1, y = offset.y - 1 },
|
||||
z_index = 0,
|
||||
})
|
||||
if textures.icon ~= nil then
|
||||
ids.icon = player:hud_add({
|
||||
@ -191,40 +209,38 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
||||
scale = iconscale,
|
||||
text = textures.icon,
|
||||
alignment = {x=-1,y=1},
|
||||
offset = { x = offset.x - 3, y = offset.y },
|
||||
})
|
||||
end
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
if textures.bgicon ~= nil then
|
||||
ids.bg = player:hud_add({
|
||||
hud_elem_type = "statbar",
|
||||
position = pos,
|
||||
text = textures.bgicon,
|
||||
number = bgiconnumber,
|
||||
alignment = {x=-1,y=-1},
|
||||
offset = { x = offset.x, y = offset.y },
|
||||
direction = 0,
|
||||
size = {x=24, y=24},
|
||||
offset = { x = offset.x - 4, y = offset.y + 2 },
|
||||
z_index = 1,
|
||||
})
|
||||
end
|
||||
end
|
||||
local bar_image, bar_size
|
||||
local bar_image, bgicon, bar_size
|
||||
if hb.settings.bar_type == "progress_bar" then
|
||||
bar_image = textures.bar
|
||||
bar_size = {x=2, y=16}
|
||||
-- NOTE: Intentionally set to nil. For some reason, on some systems,
|
||||
-- the progress bar is displaced when the bar_size is set explicitly here.
|
||||
-- On the other hand, setting this to nil is deprecated in MT 5.0.0 due to
|
||||
-- a debug log warning, but nothing is explained in lua_api.txt.
|
||||
-- This section is a potential bug magnet, please watch with care!
|
||||
-- The size of the bar image is expected to be exactly 2×16 pixels.
|
||||
bar_size = nil
|
||||
elseif hb.settings.bar_type == "statbar_classic" or hb.settings.bar_type == "statbar_modern" then
|
||||
bar_image = textures.icon
|
||||
bgicon = textures.bgicon
|
||||
bar_size = {x=24, y=24}
|
||||
end
|
||||
ids.bar = player:hud_add({
|
||||
hud_elem_type = "statbar",
|
||||
position = pos,
|
||||
text = bar_image,
|
||||
text2 = bgicon,
|
||||
number = barnumber,
|
||||
item = bgiconnumber,
|
||||
alignment = {x=-1,y=-1},
|
||||
offset = offset,
|
||||
direction = 0,
|
||||
size = bar_size,
|
||||
z_index = 1,
|
||||
})
|
||||
if hb.settings.bar_type == "progress_bar" then
|
||||
ids.text = player:hud_add({
|
||||
@ -235,6 +251,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
||||
number = text_color,
|
||||
direction = 0,
|
||||
offset = { x = offset.x + 2, y = offset.y - 1},
|
||||
z_index = 2,
|
||||
})
|
||||
end
|
||||
-- Do not forget to update hb.get_hudbar_state if you add new fields to the state table
|
||||
@ -293,6 +310,9 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon
|
||||
|
||||
local name = player:get_player_name()
|
||||
local hudtable = hb.get_hudtable(identifier)
|
||||
if not hudtable.hudstate[name] then
|
||||
return false
|
||||
end
|
||||
local value_changed, max_changed = false, false
|
||||
|
||||
if new_value ~= nil then
|
||||
@ -390,10 +410,9 @@ function hb.hide_hudbar(player, identifier)
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0})
|
||||
player:hud_change(hudtable.hudids[name].text, "text", "")
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
player:hud_change(hudtable.hudids[name].bg, "number", 0)
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].bar, "number", 0)
|
||||
player:hud_change(hudtable.hudids[name].bar, "item", 0)
|
||||
hudtable.hudstate[name].hidden = true
|
||||
return true
|
||||
end
|
||||
@ -414,9 +433,10 @@ function hb.unhide_hudbar(player, identifier)
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].text, "text", make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, value, max))
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
player:hud_change(hudtable.hudids[name].bg, "number", hb.settings.statbar_length)
|
||||
player:hud_change(hudtable.hudids[name].bar, "scale", {x=1,y=1})
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max))
|
||||
player:hud_change(hudtable.hudids[name].bar, "item", hb.value_to_barlength(max, max))
|
||||
hudtable.hudstate[name].hidden = false
|
||||
return true
|
||||
end
|
||||
@ -472,7 +492,7 @@ local function custom_hud(player)
|
||||
local breath_max = player:get_properties().breath_max
|
||||
local hide_breath
|
||||
if breath >= breath_max and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end
|
||||
hb.init_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1, hide_breath or hide)
|
||||
hb.init_hudbar(player, "breath", math.min(breath, breath_max), breath_max, hide_breath or hide)
|
||||
end
|
||||
end
|
||||
|
||||
@ -496,7 +516,7 @@ local function update_hud(player)
|
||||
hb.hide_hudbar(player, "breath")
|
||||
else
|
||||
hb.unhide_hudbar(player, "breath")
|
||||
hb.change_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1)
|
||||
hb.change_hudbar(player, "breath", math.min(breath, breath_max), breath_max)
|
||||
end
|
||||
--health
|
||||
update_health(player)
|
||||
|
4
locale/hudbars.es.tr
Normal file
@ -0,0 +1,4 @@
|
||||
# textdomain: hudbars
|
||||
Health=Salud
|
||||
Breath=Aliento
|
||||
@1: @2/@3=@1: @2/@3
|
4
locale/hudbars.ru.tr
Normal file
@ -0,0 +1,4 @@
|
||||
# textdomain: hudbars
|
||||
Health=HP
|
||||
Breath=дыхание
|
||||
@1: @2/@3=@1: @2/@3
|
Before Width: | Height: | Size: 140 B After Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 74 B |
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 71 B |
Before Width: | Height: | Size: 811 B After Width: | Height: | Size: 354 B |
Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 818 B After Width: | Height: | Size: 443 B |
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 306 B |