From 78ab6d7bc0d96b3ab931f1c0d85c28eb7523caa8 Mon Sep 17 00:00:00 2001 From: DomtronVox Date: Tue, 5 May 2020 14:32:22 -0400 Subject: [PATCH] Code cleanup and quality updates (#1) --- central_message.lua | 12 ------ core.lua | 14 ++----- formspecs.lua | 38 +------------------ hud.lua | 12 ++---- init.lua | 8 +--- locale/de.txt | 20 ---------- locale/quests.de.tr | 23 +++++++++++ locale/quests.template.tr | 22 +++++++++++ locale/template.txt | 20 ---------- mod.conf | 4 +- mod_integrations/central_message.lua | 9 +++++ .../inventory_plus.lua | 0 mod_integrations/mod_integrations.lua | 20 ++++++++++ mod_integrations/sfinv.lua | 19 ++++++++++ .../unified_inventory.lua | 0 15 files changed, 105 insertions(+), 116 deletions(-) delete mode 100644 central_message.lua delete mode 100644 locale/de.txt create mode 100644 locale/quests.de.tr create mode 100644 locale/quests.template.tr delete mode 100644 locale/template.txt create mode 100644 mod_integrations/central_message.lua rename inventory_plus.lua => mod_integrations/inventory_plus.lua (100%) create mode 100644 mod_integrations/mod_integrations.lua create mode 100644 mod_integrations/sfinv.lua rename unified_inventory.lua => mod_integrations/unified_inventory.lua (100%) diff --git a/central_message.lua b/central_message.lua deleted file mode 100644 index b725901..0000000 --- a/central_message.lua +++ /dev/null @@ -1,12 +0,0 @@ -if minetest.global_exists("cmsg") then - function quests.show_message(t, playername, text) - if (quests.hud[playername].central_message_enabled) then - local player = minetest.get_player_by_name(playername) - cmsg.push_message_player(player, text, quests.colors[t]) - minetest.sound_play("quests_" .. t, {to_player = playername}) - end - end -else - function quests.show_message(...) - end -end diff --git a/core.lua b/core.lua index 9dc4f79..a4ae072 100644 --- a/core.lua +++ b/core.lua @@ -2,13 +2,7 @@ -- @module core -- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end +local S = minetest.get_translator("quests") local empty_callback = function(...) end local function compute_tasks(playername, questname, nocallback) @@ -230,7 +224,7 @@ function quests.start_quest(playername, questname, metadata) end quests.update_hud(playername) - quests.show_message("new", playername, S("New quest:") .. " " .. quest.title) + quests.show_message("new", playername, S("New quest") .. ": " .. quest.title) return true end @@ -522,7 +516,7 @@ function quests.accept_quest(playername, questname) end end handle_quest_end(playername, questname) - quests.show_message("success", playername, S("Quest completed:") .. " " .. quests.registered_quests[questname].title) + quests.show_message("success", playername, S("Quest completed") .. ": " .. quests.registered_quests[questname].title) minetest.after(3, function(playername, questname) quests.active_quests[playername][questname] = nil quests.update_hud(playername) @@ -565,7 +559,7 @@ function quests.abort_quest(playername, questname) local quest = quests.registered_quests[questname] quest.abortcallback(playername, questname, quests.active_quests[playername][questname].metadata) handle_quest_end(playername, questname) - quests.show_message("failed", playername, S("Quest failed:") .. " " .. quest.title) + quests.show_message("failed", playername, S("Quest failed") .. ": " .. quest.title) minetest.after(3, function(playername, questname) quests.active_quests[playername][questname] = nil quests.update_hud(playername) diff --git a/formspecs.lua b/formspecs.lua index 7c8860a..7114455 100644 --- a/formspecs.lua +++ b/formspecs.lua @@ -1,11 +1,5 @@ -- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end +local S = minetest.get_translator("quests") -- construct the questlog function quests.create_formspec(playername, tab, integrated) @@ -117,34 +111,6 @@ function quests.create_config(playername, integrated) return formspec end -local function wordwrap(text, linelength) - local lines = text:split("\n") - local ret = "" - for i = 1,#lines do - local line = lines[i] - while (#line > linelength) do - local split = false - local j = linelength - while (not split) do - if (string.sub(line, j, j) == " ") then - split = true - ret = ret .. string.sub(line, 1, j) .. "\n" - line = string.sub(line, j + 1) - end - if (j <= 1) then - break - end - j = j - 1 - end - if (not split) then - ret = ret .. string.sub(line, 1, linelength) .. "\n" - line = string.sub(line, linelength); - end - end - ret = ret .. line .. "\n" - end - return ret -end -- construct the info formspec function quests.create_info(playername, questname, taskid, integrated) @@ -165,7 +131,7 @@ function quests.create_info(playername, questname, taskid, integrated) end if quest.simple then - formspec = formspec .. "textarea[.4,1;7.2,7;_;;" .. minetest.formspec_escape(quest.description) .. "]" + formspec = formspec .. "textarea[.4,1;7.2,7;;;" .. minetest.formspec_escape(quest.description) .. "]" else quests.formspec_lists[playername].taskid = nil local taskidlist = {} diff --git a/hud.lua b/hud.lua index 6b408f1..a806f18 100644 --- a/hud.lua +++ b/hud.lua @@ -2,13 +2,7 @@ -- @module hud -- Boilerplate to support localized strings if intllib mod is installed. -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - -- If you don't use insertions (@1, @2, etc) you can use this: - S = function(s) return s end -end +local S = minetest.get_translator("quests") local show_max = 10 -- the maximum visible quests. @@ -55,7 +49,7 @@ function quests.show_hud(playername, autohide) position = {x = hud_config.position.x, y = hud_config.position.y}, offset = {x = hud_config.offset.x, y = hud_config.offset.y - 20}, number = hud_config.number, - text = S("Quests:") + text = S("Quests") .. ":" }) quests.hud[playername].list = {} @@ -190,7 +184,7 @@ function quests.update_hud(playername) player:hud_change(quests.hud[playername].header, "text", S("No more Quests")) minetest.after(3, function(playername) if next(quests.active_quests[playername]) ~= nil then - player:hud_change(quests.hud[playername].header, "text", S("Quests:")) + player:hud_change(quests.hud[playername].header, "text", S("Quests")..":") quests.update_hud(playername) else quests.hide_hud(playername) diff --git a/init.lua b/init.lua index f64e8d1..4ac008d 100644 --- a/init.lua +++ b/init.lua @@ -46,17 +46,11 @@ function quests.sorted_pairs(t) return iter end -dofile(MP .. "/central_message.lua") dofile(MP .. "/core.lua") dofile(MP .. "/hud.lua") dofile(MP .. "/formspecs.lua") +dofile(MP .. "/mod_integrations/mod_integrations.lua") --- support for unified_inventory -if (minetest.get_modpath("unified_inventory") ~= nil) then - dofile(minetest.get_modpath("quests") .. "/unified_inventory.lua") -elseif (minetest.get_modpath("inventory_plus") ~= nil) then - dofile(minetest.get_modpath("quests") .. "/inventory_plus.lua") -end -- write the quests to file diff --git a/locale/de.txt b/locale/de.txt deleted file mode 100644 index 10ca0d5..0000000 --- a/locale/de.txt +++ /dev/null @@ -1,20 +0,0 @@ -missing description = fehlende Beschreibung -missing title = fehlender Titel -Quests: = Quests: -No more Quests = Keine weiteren Quests -Abort quest = Quest abbrechen -Configure = Konfigurieren -Enable HUD = HUD einschalten -Autohide HUD = HUD automatisch verstecken -Exit = Verlassen -Failed quests = Gescheiterte Quests -Finished quests = Beendete Quests -Info = Info -No quest specified. = Keine Quest ausgewählt. -Open quests = Offene Quests -Return = Zurück -Show all open quests = Zeige alle offenen Quests -There are no quests in this category. = Es gibt keine Quests in dieser Kategorie. -New quest: = Neue Quest: -Quest completed: = Quest beendet: -Quest failed: = Quest gescheitert: diff --git a/locale/quests.de.tr b/locale/quests.de.tr new file mode 100644 index 0000000..27460e6 --- /dev/null +++ b/locale/quests.de.tr @@ -0,0 +1,23 @@ +# textdomain: quests +missing description=fehlende Beschreibung +missing title=fehlender Titel +Quests=Quests +No more Quests=Keine weiteren Quests +Abort quest=Quest abbrechen +Configure=Konfigurieren +Enable HUD=HUD einschalten +Autohide HUD=HUD automatisch verstecken +Exit=Verlassen +Failed quests=Gescheiterte Quests +Finished quests=Beendete Quests +Info=Info +No quest specified.=Keine Quest ausgewählt. +Open quests=Offene Quests +Return=Zurück +Show all open quests=Zeige alle offenen Quests +There are no quests in this category.=Es gibt keine Quests in dieser Kategorie. +New quest=Neue Quest +Quest completed=Quest beendet +Quest failed=Quest gescheitert +Central messages=Zentrale nachrichten + diff --git a/locale/quests.template.tr b/locale/quests.template.tr new file mode 100644 index 0000000..8c24a95 --- /dev/null +++ b/locale/quests.template.tr @@ -0,0 +1,22 @@ +# textdomain: quests +missing description= +missing title= +Quests= +No more Quests= +Abort quest= +Configure= +Enable HUD= +Autohide HUD= +Exit= +Failed quests= +Finished quests= +Info= +No quest specified.= +Open quests= +Return= +Show all open quests= +There are no quests in this category.= +New quest= +Quest completed= +Quest failed= +Central messages= diff --git a/locale/template.txt b/locale/template.txt deleted file mode 100644 index 76e1b77..0000000 --- a/locale/template.txt +++ /dev/null @@ -1,20 +0,0 @@ -missing description = -missing title = -Quests: = -No more Quests = -Abort quest = -Configure = -Enable HUD = -Autohide HUD = -Exit = -Failed quests = -Finished quests = -Info = -No quest specified. = -Open quests = -Return = -Show all open quests = -There are no quests in this category. = -New quest: = -Quest completed: = -Quest failed: = diff --git a/mod.conf b/mod.conf index 9cbfd1f..c31a457 100644 --- a/mod.conf +++ b/mod.conf @@ -1,3 +1,3 @@ name = quests -optional_depends = intllib, unified_inventory, inventory_plus, central_message -description = Quest framework for Minetest. \ No newline at end of file +optional_depends = unified_inventory, inventory_plus, central_message, sfinv +description = Quest framework for Minetest. diff --git a/mod_integrations/central_message.lua b/mod_integrations/central_message.lua new file mode 100644 index 0000000..fd930e2 --- /dev/null +++ b/mod_integrations/central_message.lua @@ -0,0 +1,9 @@ + +function quests.show_message(t, playername, text) + if (quests.hud[playername].central_message_enabled) then + local player = minetest.get_player_by_name(playername) + cmsg.push_message_player(player, text, quests.colors[t]) + minetest.sound_play("quests_" .. t, {to_player = playername}) + end +end + diff --git a/inventory_plus.lua b/mod_integrations/inventory_plus.lua similarity index 100% rename from inventory_plus.lua rename to mod_integrations/inventory_plus.lua diff --git a/mod_integrations/mod_integrations.lua b/mod_integrations/mod_integrations.lua new file mode 100644 index 0000000..4b5092a --- /dev/null +++ b/mod_integrations/mod_integrations.lua @@ -0,0 +1,20 @@ +-- support for several inventory mods +if minetest.get_modpath("unified_inventory") then + dofile(minetest.get_modpath("quests") .. "/mod_integrations/unified_inventory.lua") +end + +if minetest.get_modpath("inventory_plus") then + dofile(minetest.get_modpath("quests") .. "/mod_integrations/inventory_plus.lua") +end + +if minetest.global_exists("sfinv") then + dofile(minetest.get_modpath("quests") .. "/mod_integrations/sfinv.lua") +end + +-- mod that displays notifications in the screen's center +if minetest.get_modpath("central_message") then + dofile(minetest.get_modpath("quests") .. "/mod_integrations/central_message.lua") + +else -- define blank function so we can still use this in the code later + function quests.show_message(...) end +end diff --git a/mod_integrations/sfinv.lua b/mod_integrations/sfinv.lua new file mode 100644 index 0000000..1feba78 --- /dev/null +++ b/mod_integrations/sfinv.lua @@ -0,0 +1,19 @@ +assert(sfinv.enabled, "Please enable sfinv in order to use it.") +local old_func = sfinv.pages["sfinv:crafting"].get +sfinv.override_page("sfinv:crafting", { + get = function(self, player, context) + local fs = old_func(self, player, context) + return fs .. "image_button[0,0;1,1;inventory_plus_quests.png;quests;]" + end +}) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if fields.quests then + quests.show_formspec(player:get_player_name()) + return true + elseif fields.quests_exit then + sfinv.set_page(player, "sfinv:crafting") + return true + end + return false +end) diff --git a/unified_inventory.lua b/mod_integrations/unified_inventory.lua similarity index 100% rename from unified_inventory.lua rename to mod_integrations/unified_inventory.lua