summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWuzzy <almikes@aol.com>2015-02-12 04:26:39 +0100
committerWuzzy <almikes@aol.com>2015-02-12 04:26:39 +0100
commiteb4e72c5a4294b9d3f2bd38fedf509587b566e3a (patch)
tree6616117abd238a63d3b19a286902b04a1c67a168
parentc2e2a377e615345da941b85a66869a8948f8eaeb (diff)
Add new function: hb.get_hudbar_state
-rw-r--r--API.md20
-rw-r--r--init.lua14
2 files changed, 34 insertions, 0 deletions
diff --git a/API.md b/API.md
index e421d8d..f973298 100644
--- a/API.md
+++ b/API.md
@@ -152,3 +152,23 @@ Makes a previously hidden HUD bar visible again to a player.
#### Return value
Always `nil`.
+
+## Reading HUD bar information
+It is also possible to read information about an active HUD bar.
+
+### `hb.get_hudbar_state(player, identifier)`
+Returns the current state of the active player's HUD bar.
+
+#### Parameters
+* `player`: `ObjectRef` of the player to which the HUD bar belongs to
+* `identifier`: The identifier of the HUD bar type to hide, as specified in `hb.register_hudbar`.
+
+#### Return value
+A table which holds information on the current state of the HUD bar. Note the table is a partial
+copy of the internal HUD bar state, it is *not* a reference; the information hold by the table is
+only true for the moment you called this function. The fields of this table are:
+* `value`: Current value of HUD bar
+* `max`: Current maximum value of HUD bar
+* `hidden`: Boolean denoting whether the HUD bar is hidden
+* `barlength`: The length of the HUD bar in pixels. This field is meaningless if the HUD bar is currently hidden.
+* `text`: The text shown on the HUD bar. This fiels is meaningless if the HUD bar is currently hidden.
diff --git a/init.lua b/init.lua
index d132bbd..ad3bdd1 100644
--- a/init.lua
+++ b/init.lua
@@ -105,6 +105,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
direction = 0,
offset = { x = offset.x + 2, y = offset.y },
})
+ -- Do not forget to update hb.get_hudbar_state if you add new fields to the state table
state.hidden = start_hidden
state.value = start_value
state.max = start_max
@@ -214,6 +215,19 @@ function hb.unhide_hudbar(player, identifier)
end
end
+function hb.get_hudbar_state(player, identifier)
+ local ref = hb.get_hudtable(identifier).hudstate[player:get_player_name()]
+ -- Do not forget to update this chunk of code in case the state changes
+ local copy = {
+ hidden = ref.hidden,
+ value = ref.value,
+ max = ref.max,
+ text = ref.text,
+ barlength = ref.barlength,
+ }
+ return copy
+end
+
--register built-in HUD bars
hb.register_hudbar("health", 0xFFFFFF, "Health", { bar = "hudbars_bar_health.png", icon = "hudbars_icon_health.png" }, 20, 20, false)
hb.register_hudbar("breath", 0xFFFFFF, "Breath", { bar = "hudbars_bar_breath.png", icon = "hudbars_icon_breath.png" }, 10, 10, true)