diff --git a/API.md b/API.md index 124da82..a53344c 100644 --- a/API.md +++ b/API.md @@ -1,5 +1,5 @@ -API documentation for the HUD bars mod 1.7.0 -============================================ +API documentation for the HUD bars mod +====================================== ## Introduction This API allows you to add, change, hide and unhide custom HUD bars for this mod. @@ -170,7 +170,7 @@ Makes a previously hidden HUD bar visible again to a player. ## Reading HUD bar information -It is also possible to read information about an active HUD bar. +It is also possible to read information about existing HUD bars. ### `hb.get_hudbar_state(player, identifier)` Returns the current state of the active player's HUD bar. @@ -191,3 +191,6 @@ hold by the table is only true for the moment you called this function. The fiel * `text`: The text shown on the HUD bar. This fiels is meaningless if the HUD bar is currently hidden. If the player does not exist, returns `nil` instead. + +### `hb.get_hudbar_identifiers()` +Returns a table of all currently registered HUD bar identifiers. diff --git a/README.md b/README.md index 6571b77..a3a1a96 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ this mod will place them accordingly. position should be displayed correctly on every screen size. ## Current version -The current version is 1.7.0. +The current version is 1.10.0. This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer standard. @@ -34,23 +34,25 @@ Translations: * German: Wuzzy * Portuguese: BrunoMine +* Turkish: admicos +* Dutch: kingoscargames +* Italian: Hamlet This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License (WTFPL), version 2, as published by Sam Hocevar. +and/or modify it under the terms of the MIT License. ### Licenses of textures * `hudbars_icon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen * `hudbars_bgicon_health.png`—celeron55 (CC BY-SA 3.0), modified by BlockMen -* `hudbars_icon_breath.png`—kaeza (WTFPL), modified by BlockMen, modified again by Wuzzy -* `hudbars_bgicon_breath.png`—based on previous image, edited by Wuzzy (WTFPL) -* `hudbars_bar_health.png`—Wuzzy (WTFPL) -* `hudbars_bar_breath.png`—Wuzzy (WTFPL) -* `hudbars_bar_background.png`—Wuzzy (WTFPL) +* `hudbars_icon_breath.png`—kaeza (MIT License), modified by BlockMen, modified again by Wuzzy +* `hudbars_bgicon_breath.png`—based on previous image, edited by Wuzzy (MIT License) +* `hudbars_bar_health.png`—Wuzzy (MIT License) +* `hudbars_bar_breath.png`—Wuzzy (MIT License) +* `hudbars_bar_background.png`—Wuzzy (MIT License) ### License references * [CC-BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) -* [WTFPL](http://sam.zoy.org/wtfpl/COPYING) +* [MIT License](https://opensource.org/licenses/MIT) diff --git a/default_settings.lua b/default_settings.lua new file mode 100644 index 0000000..d2a325b --- /dev/null +++ b/default_settings.lua @@ -0,0 +1,48 @@ +-- (Hardcoded) default settings + +hb.settings.max_bar_length = 160 +hb.settings.statbar_length = 20 + +-- Statbar positions +hb.settings.pos_left = {} +hb.settings.pos_right = {} +hb.settings.start_offset_left = {} +hb.settings.start_offset_right= {} +hb.settings.pos_left.x = hb.load_setting("hudbars_pos_left_x", "number", 0.5) +hb.settings.pos_left.y = hb.load_setting("hudbars_pos_left_y", "number", 1) +hb.settings.pos_right.x = hb.load_setting("hudbars_pos_right_x", "number", 0.5) +hb.settings.pos_right.y = hb.load_setting("hudbars_pos_right_y", "number", 1) +hb.settings.bar_type = hb.load_setting("hudbars_bar_type", "string", "progress_bar", {"progress_bar", "statbar_classic", "statbar_modern"}) +if hb.settings.bar_type == "progress_bar" then + hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_offset_left_x", "number", -175) + hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_offset_left_y", "number", -86) + hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_offset_right_x", "number", 15) + hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_offset_right_y", "number", -86) +else + hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_statbar_offset_left_x", "number", -265) + hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_statbar_offset_left_y", "number", -90) + hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_statbar_offset_right_x", "number", 25) + hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_statbar_offset_right_y", "number", -90) +end +hb.settings.vmargin = hb.load_setting("hudbars_vmargin", "number", 24) +hb.settings.tick = hb.load_setting("hudbars_tick", "number", 0.1) + +-- Experimental setting: Changing this setting is not officially supported, do NOT rely on it! +hb.settings.forceload_default_hudbars = hb.load_setting("hudbars_forceload_default_hudbars", "bool", true) + +-- Misc. settings +hb.settings.alignment_pattern = hb.load_setting("hudbars_alignment_pattern", "string", "zigzag", {"zigzag", "stack_up", "stack_down"}) +hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", true) + +local sorting = minetest.settings:get("hudbars_sorting") +if sorting ~= nil then + hb.settings.sorting = {} + hb.settings.sorting_reverse = {} + for k,v in string.gmatch(sorting, "(%w+)=(%w+)") do + hb.settings.sorting[k] = tonumber(v) + hb.settings.sorting_reverse[tonumber(v)] = k + end +else + hb.settings.sorting = { ["health"] = 0, ["breath"] = 1 } + hb.settings.sorting_reverse = { [0] = "health", [1] = "breath" } +end diff --git a/init.lua b/init.lua index 6bcc624..fc43f85 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,10 @@ local S -if (minetest.get_modpath("intllib")) then - S = intllib.Getter() +if minetest.global_exists("intllib") then + if intllib.make_gettext_pair then + S = intllib.make_gettext_pair() + else + S = intllib.Getter() + end else S = function ( s ) return s end end @@ -20,11 +24,11 @@ hb.settings = {} function hb.load_setting(sname, stype, defaultval, valid_values) local sval if stype == "string" then - sval = minetest.setting_get(sname) + sval = minetest.settings:get(sname) elseif stype == "bool" then - sval = minetest.setting_getbool(sname) + sval = minetest.settings:get_bool(sname) elseif stype == "number" then - sval = tonumber(minetest.setting_get(sname)) + sval = tonumber(minetest.settings:get(sname)) end if sval ~= nil then if valid_values ~= nil then @@ -48,53 +52,8 @@ function hb.load_setting(sname, stype, defaultval, valid_values) end end --- (hardcoded) default settings -hb.settings.max_bar_length = 160 -hb.settings.statbar_length = 20 - --- statbar positions -hb.settings.pos_left = {} -hb.settings.pos_right = {} -hb.settings.start_offset_left = {} -hb.settings.start_offset_right= {} -hb.settings.pos_left.x = hb.load_setting("hudbars_pos_left_x", "number", 0.5) -hb.settings.pos_left.y = hb.load_setting("hudbars_pos_left_y", "number", 1) -hb.settings.pos_right.x = hb.load_setting("hudbars_pos_right_x", "number", 0.5) -hb.settings.pos_right.y = hb.load_setting("hudbars_pos_right_y", "number", 1) -hb.settings.bar_type = hb.load_setting("hudbars_bar_type", "string", "progress_bar", {"progress_bar", "statbar_classic", "statbar_modern"}) -if hb.settings.bar_type == "progress_bar" then - hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_offset_left_x", "number", -175) - hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_offset_left_y", "number", -86) - hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_offset_right_x", "number", 15) - hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_offset_right_y", "number", -86) -else - hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_statbar_offset_left_x", "number", -265) - hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_statbar_offset_left_y", "number", -90) - hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_statbar_offset_right_x", "number", 25) - hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_statbar_offset_right_y", "number", -90) -end -hb.settings.vmargin = hb.load_setting("hudbars_vmargin", "number", 24) -hb.settings.tick = hb.load_setting("hudbars_tick", "number", 0.1) - --- experimental setting: Changing this setting is not officially supported, do NOT rely on it! -hb.settings.forceload_default_hudbars = hb.load_setting("hudbars_forceload_default_hudbars", "bool", true) - --- Misc. settings -hb.settings.alignment_pattern = hb.load_setting("hudbars_alignment_pattern", "string", "zigzag", {"zigzag", "stack_up", "stack_down"}) -hb.settings.autohide_breath = hb.load_setting("hudbars_autohide_breath", "bool", true) - -local sorting = minetest.setting_get("hudbars_sorting") -if sorting ~= nil then - hb.settings.sorting = {} - hb.settings.sorting_reverse = {} - for k,v in string.gmatch(sorting, "(%w+)=(%w+)") do - hb.settings.sorting[k] = tonumber(v) - hb.settings.sorting_reverse[tonumber(v)] = k - end -else - hb.settings.sorting = { ["health"] = 0, ["breath"] = 1 } - hb.settings.sorting_reverse = { [0] = "health", [1] = "breath" } -end +-- Load default settings +dofile(minetest.get_modpath("hudbars").."/default_settings.lua") local function player_exists(player) return player ~= nil and player:is_player() @@ -463,8 +422,16 @@ function hb.get_hudbar_state(player, identifier) return copy end +function hb.get_hudbar_identifiers() + local ids = {} + for id, _ in pairs(hb.hudtables) do + table.insert(ids, id) + end + return ids +end + --register built-in HUD bars -if minetest.setting_getbool("enable_damage") or hb.settings.forceload_default_hudbars then +if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then hb.register_hudbar("health", 0xFFFFFF, S("Health"), { bar = "hudbars_bar_health.png", icon = "hudbars_icon_health.png", bgicon = "hudbars_bgicon_health.png" }, 20, 20, false) hb.register_hudbar("breath", 0xFFFFFF, S("Breath"), { bar = "hudbars_bar_breath.png", icon = "hudbars_icon_breath.png", bgicon = "hudbars_bgicon_breath.png" }, 10, 10, true) end @@ -478,9 +445,9 @@ end local function custom_hud(player) - if minetest.setting_getbool("enable_damage") or hb.settings.forceload_default_hudbars then + if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then local hide - if minetest.setting_getbool("enable_damage") then + if minetest.settings:get_bool("enable_damage") then hide = false else hide = true @@ -500,7 +467,7 @@ end -- update built-in HUD bars local function update_hud(player) if not player_exists(player) then return end - if minetest.setting_getbool("enable_damage") then + if minetest.settings:get_bool("enable_damage") then if hb.settings.forceload_default_hudbars then hb.unhide_hudbar(player, "health") end @@ -521,7 +488,11 @@ local function update_hud(player) end end -minetest.register_on_player_hpchange(update_health) +minetest.register_on_player_hpchange(function(player) + if hb.players[player:get_player_name()] ~= nil then + update_health(player) + end +end) minetest.register_on_respawnplayer(function(player) update_health(player) @@ -546,7 +517,7 @@ minetest.register_globalstep(function(dtime) if main_timer > hb.settings.tick or timer > 4 then if main_timer > hb.settings.tick then main_timer = 0 end -- only proceed if damage is enabled - if minetest.setting_getbool("enable_damage") or hb.settings.forceload_default_hudbars then + if minetest.settings:get_bool("enable_damage") or hb.settings.forceload_default_hudbars then for _, player in pairs(hb.players) do -- update all hud elements update_hud(player) diff --git a/locale/it.txt b/locale/it.txt new file mode 100644 index 0000000..40558ac --- /dev/null +++ b/locale/it.txt @@ -0,0 +1,5 @@ +Health = Salute +Breath = Ossigeno + +# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +%s: %d/%d diff --git a/locale/nl.txt b/locale/nl.txt new file mode 100644 index 0000000..33e161e --- /dev/null +++ b/locale/nl.txt @@ -0,0 +1,5 @@ +Health = Gezondheid +Breath = Adem + +# Default format string for progress bar-style HUD bars, e.g. “Health 5/20” +%s: %d/%d diff --git a/locale/tr.txt b/locale/tr.txt new file mode 100644 index 0000000..b49c7a0 --- /dev/null +++ b/locale/tr.txt @@ -0,0 +1,3 @@ +Health = Can +Breath = Nefes +%s: %d/%d = %s: %d/%d