summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-04-04 17:37:43 +0100
committerrubenwardy <rw@rubenwardy.com>2018-04-04 17:37:43 +0100
commit7c5fd79b57fad2b9485d801eea07c1c9fedaabe9 (patch)
tree79ec666a5497999b3129fe925238040d3c48aa59
parentc579f862b6d4952bc56f2a0a402ad5c77e5b11f2 (diff)
Clean up formspec related code
-rw-r--r--api.lua153
-rw-r--r--gui.lua179
-rw-r--r--init.lua14
-rw-r--r--sfinv.lua25
-rw-r--r--triggers.lua9
-rw-r--r--unified_inventory.lua13
6 files changed, 191 insertions, 202 deletions
diff --git a/api.lua b/api.lua
index 6cb282b..4cbf6cb 100644
--- a/api.lua
+++ b/api.lua
@@ -352,159 +352,6 @@ function awards.unlock(name, award)
end
end
--- Backwards compatibility
-awards.give_achievement = awards.unlock
-
---[[minetest.register_chatcommand("gawd", {
- params = "award name",
- description = "gawd: give award to self",
- func = function(name, param)
- awards.unlock(name,param)
- end
-})]]--
-
-function awards.getFormspec(name, to, sid)
- local formspec = ""
- local listofawards = awards._order_awards(name)
- local playerdata = awards.player(name)
-
- if #listofawards == 0 then
- formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No awards available.")).."]"
- formspec = formspec .. "button_exit[4.2,2.3;3,1;close;"..minetest.formspec_escape(S("OK")).."]"
- return formspec
- end
-
- -- Sidebar
- if sid then
- local item = listofawards[sid+0]
- local def = awards.def[item.name]
-
- if def and def.secret and not item.got then
- formspec = formspec .. "label[1,2.75;"..minetest.formspec_escape(S("(Secret Award)")).."]"..
- "image[1,0;3,3;awards_unknown.png]"
- if def and def.description then
- formspec = formspec .. "textarea[0.25,3.25;4.8,1.7;;"..minetest.formspec_escape(S("Unlock this award to find out what it is."))..";]"
- end
- else
- local title = item.name
- if def and def.title then
- title = def.title
- end
- local status = "%s"
- if item.got then
- status = S("%s (got)")
- end
-
- formspec = formspec .. "textarea[0.5,2.7;4.8,1.45;;" ..
- string.format(status, minetest.formspec_escape(title)) ..
- ";]"
-
- if def and def.icon then
- formspec = formspec .. "image[1,0;3,3;" .. def.icon .. "]"
- end
- local barwidth = 4.6
- local perc = nil
- local label = nil
- if def.getProgress and playerdata then
- local res = def:getProgress(playerdata)
- perc = res.perc
- label = res.label
- end
- if perc then
- if perc > 1 then
- perc = 1
- end
- formspec = formspec .. "background[0,4.80;" .. barwidth ..",0.25;awards_progress_gray.png;false]"
- formspec = formspec .. "background[0,4.80;" .. (barwidth * perc) ..",0.25;awards_progress_green.png;false]"
- if label then
- formspec = formspec .. "label[1.75,4.63;" .. minetest.formspec_escape(label) .. "]"
- end
- end
- if def and def.description then
- formspec = formspec .. "textarea[0.25,3.75;4.8,1.7;;"..minetest.formspec_escape(def.description)..";]"
- end
- end
- end
-
- -- Create list box
- formspec = formspec .. "textlist[4.75,0;6,5;awards;"
- local first = true
- for _,award in pairs(listofawards) do
- local def = awards.def[award.name]
- if def then
- if not first then
- formspec = formspec .. ","
- end
- first = false
-
- if def.secret and not award.got then
- formspec = formspec .. "#707070"..minetest.formspec_escape(S("(Secret Award)"))
- else
- local title = award.name
- if def and def.title then
- title = def.title
- end
- if award.got then
- formspec = formspec .. minetest.formspec_escape(title)
- else
- formspec = formspec .. "#ACACAC".. minetest.formspec_escape(title)
- end
- end
- end
- end
- return formspec .. ";"..sid.."]"
-end
-
-function awards.show_to(name, to, sid, text)
- if name == "" or name == nil then
- name = to
- end
- local data = awards.player(to)
- if name == to and data.disabled then
- minetest.chat_send_player(S("You've disabled awards. Type /awards enable to reenable."))
- return
- end
- if text then
- local listofawards = awards._order_awards(name)
- if #listofawards == 0 then
- minetest.chat_send_player(to, S("Error: No awards available."))
- return
- elseif not data or not data.unlocked then
- minetest.chat_send_player(to, S("You have not unlocked any awards."))
- return
- end
- minetest.chat_send_player(to, string.format(S("%s’s awards:"), name))
-
- for _, str in pairs(data.unlocked) do
- local def = awards.def[str]
- if def then
- if def.title then
- if def.description then
- minetest.chat_send_player(to, string.format(S("%s: %s"), def.title, def.description))
- else
- minetest.chat_send_player(to, def.title)
- end
- else
- minetest.chat_send_player(to, str)
- end
- end
- end
- else
- if sid == nil or sid < 1 then
- sid = 1
- end
- local deco = ""
- if minetest.global_exists("default") then
- deco = default.gui_bg .. default.gui_bg_img
- end
- -- Show formspec to user
- minetest.show_formspec(to,"awards:awards",
- "size[11,5]" .. deco ..
- awards.getFormspec(name, to, sid))
- end
-end
-awards.showto = awards.show_to
-
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "awards:awards" then
return false
diff --git a/gui.lua b/gui.lua
new file mode 100644
index 0000000..e8745d8
--- /dev/null
+++ b/gui.lua
@@ -0,0 +1,179 @@
+local S = awards.gettext
+
+function awards.get_formspec(name, to, sid)
+ local formspec = ""
+ local listofawards = awards._order_awards(name)
+ local playerdata = awards.player(name)
+
+ if #listofawards == 0 then
+ formspec = formspec .. "label[3.9,1.5;"..minetest.formspec_escape(S("Error: No awards available.")).."]"
+ formspec = formspec .. "button_exit[4.2,2.3;3,1;close;"..minetest.formspec_escape(S("OK")).."]"
+ return formspec
+ end
+
+ -- Sidebar
+ if sid then
+ local item = listofawards[sid+0]
+ local def = awards.def[item.name]
+
+ if def and def.secret and not item.got then
+ formspec = formspec .. "label[1,2.75;"..minetest.formspec_escape(S("(Secret Award)")).."]"..
+ "image[1,0;3,3;awards_unknown.png]"
+ if def and def.description then
+ formspec = formspec .. "textarea[0.25,3.25;4.8,1.7;;"..minetest.formspec_escape(S("Unlock this award to find out what it is."))..";]"
+ end
+ else
+ local title = item.name
+ if def and def.title then
+ title = def.title
+ end
+ local status = "%s"
+ if item.got then
+ status = S("%s (got)")
+ end
+
+ formspec = formspec .. "textarea[0.5,2.7;4.8,1.45;;" ..
+ string.format(status, minetest.formspec_escape(title)) ..
+ ";]"
+
+ if def and def.icon then
+ formspec = formspec .. "image[1,0;3,3;" .. def.icon .. "]"
+ end
+ local barwidth = 4.6
+ local perc = nil
+ local label = nil
+ if def.getProgress and playerdata then
+ local res = def:getProgress(playerdata)
+ perc = res.perc
+ label = res.label
+ end
+ if perc then
+ if perc > 1 then
+ perc = 1
+ end
+ formspec = formspec .. "background[0,4.80;" .. barwidth ..",0.25;awards_progress_gray.png;false]"
+ formspec = formspec .. "background[0,4.80;" .. (barwidth * perc) ..",0.25;awards_progress_green.png;false]"
+ if label then
+ formspec = formspec .. "label[1.75,4.63;" .. minetest.formspec_escape(label) .. "]"
+ end
+ end
+ if def and def.description then
+ formspec = formspec .. "textarea[0.25,3.75;4.8,1.7;;"..minetest.formspec_escape(def.description)..";]"
+ end
+ end
+ end
+
+ -- Create list box
+ formspec = formspec .. "textlist[4.75,0;6,5;awards;"
+ local first = true
+ for _,award in pairs(listofawards) do
+ local def = awards.def[award.name]
+ if def then
+ if not first then
+ formspec = formspec .. ","
+ end
+ first = false
+
+ if def.secret and not award.got then
+ formspec = formspec .. "#707070"..minetest.formspec_escape(S("(Secret Award)"))
+ else
+ local title = award.name
+ if def and def.title then
+ title = def.title
+ end
+ if award.got then
+ formspec = formspec .. minetest.formspec_escape(title)
+ else
+ formspec = formspec .. "#ACACAC".. minetest.formspec_escape(title)
+ end
+ end
+ end
+ end
+ return formspec .. ";"..sid.."]"
+end
+
+
+function awards.show_to(name, to, sid, text)
+ if name == "" or name == nil then
+ name = to
+ end
+ local data = awards.player(to)
+ if name == to and data.disabled then
+ minetest.chat_send_player(S("You've disabled awards. Type /awards enable to reenable."))
+ return
+ end
+ if text then
+ local listofawards = awards._order_awards(name)
+ if #listofawards == 0 then
+ minetest.chat_send_player(to, S("Error: No awards available."))
+ return
+ elseif not data or not data.unlocked then
+ minetest.chat_send_player(to, S("You have not unlocked any awards."))
+ return
+ end
+ minetest.chat_send_player(to, string.format(S("%s’s awards:"), name))
+
+ for _, str in pairs(data.unlocked) do
+ local def = awards.def[str]
+ if def then
+ if def.title then
+ if def.description then
+ minetest.chat_send_player(to, string.format(S("%s: %s"), def.title, def.description))
+ else
+ minetest.chat_send_player(to, def.title)
+ end
+ else
+ minetest.chat_send_player(to, str)
+ end
+ end
+ end
+ else
+ if sid == nil or sid < 1 then
+ sid = 1
+ end
+ local deco = ""
+ if minetest.global_exists("default") then
+ deco = default.gui_bg .. default.gui_bg_img
+ end
+ -- Show formspec to user
+ minetest.show_formspec(to,"awards:awards",
+ "size[11,5]" .. deco ..
+ awards.get_formspec(name, to, sid))
+ end
+end
+
+if minetest.get_modpath("sfinv") then
+ sfinv.register_page("awards:awards", {
+ title = S("Awards"),
+ on_enter = function(self, player, context)
+ context.awards_idx = 1
+ end,
+ get = function(self, player, context)
+ local name = player:get_player_name()
+ return sfinv.make_formspec(player, context,
+ awards.get_formspec(name, name, context.awards_idx or 1),
+ false, "size[11,5]")
+ end,
+ on_player_receive_fields = function(self, player, context, fields)
+ if fields.awards then
+ local event = minetest.explode_textlist_event(fields.awards)
+ if event.type == "CHG" then
+ context.awards_idx = event.index
+ sfinv.set_player_inventory_formspec(player, context)
+ end
+ end
+ end
+ })
+end
+
+if minetest.get_modpath("unified_inventory") ~= nil then
+ unified_inventory.register_button("awards", {
+ type = "image",
+ image = "awards_ui_icon.png",
+ tooltip = S("Awards"),
+ action = function(player)
+ local name = player:get_player_name()
+ awards.show_to(name, name, nil, false)
+ end,
+ })
+end
diff --git a/init.lua b/init.lua
index 0207aae..ea4e6b2 100644
--- a/init.lua
+++ b/init.lua
@@ -25,11 +25,21 @@ awards.gettext, awards.ngettext = dofile(minetest.get_modpath("awards").."/intll
dofile(minetest.get_modpath("awards").."/api_helpers.lua")
dofile(minetest.get_modpath("awards").."/api.lua")
dofile(minetest.get_modpath("awards").."/chat_commands.lua")
-dofile(minetest.get_modpath("awards").."/sfinv.lua")
-dofile(minetest.get_modpath("awards").."/unified_inventory.lua")
+dofile(minetest.get_modpath("awards").."/gui.lua")
dofile(minetest.get_modpath("awards").."/triggers.lua")
-- dofile(minetest.get_modpath("awards").."/awards.lua")
+-- Backwards compatibility
+awards.give_achievement = awards.unlock
+awards.getFormspec = awards.get_formspec
+awards.showto = awards.show_to
+awards.register_onDig = awards.register_on_dig
+awards.register_onPlace = awards.register_on_place
+awards.register_onDeath = awards.register_on_death
+awards.register_onChat = awards.register_on_chat
+awards.register_onJoin = awards.register_on_join
+awards.register_onCraft = awards.register_on_craft
+
awards.register_achievement("award_saint_maclou",{
title = "Saint-Maclou",
description = "Place 20 coal checkers.",
diff --git a/sfinv.lua b/sfinv.lua
deleted file mode 100644
index e2b6eb4..0000000
--- a/sfinv.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-if minetest.get_modpath("sfinv") then
- local S = awards.gettext
-
- sfinv.register_page("awards:awards", {
- title = S("Awards"),
- on_enter = function(self, player, context)
- context.awards_idx = 1
- end,
- get = function(self, player, context)
- local name = player:get_player_name()
- return sfinv.make_formspec(player, context,
- awards.getFormspec(name, name, context.awards_idx or 1),
- false, "size[11,5]")
- end,
- on_player_receive_fields = function(self, player, context, fields)
- if fields.awards then
- local event = minetest.explode_textlist_event(fields.awards)
- if event.type == "CHG" then
- context.awards_idx = event.index
- sfinv.set_player_inventory_formspec(player, context)
- end
- end
- end
- })
-end
diff --git a/triggers.lua b/triggers.lua
index 476ca7f..f3fe708 100644
--- a/triggers.lua
+++ b/triggers.lua
@@ -83,15 +83,6 @@ minetest.register_on_joinplayer(awards.notify_join)
-- end
-- })
-
--- Backwards compatibility
-awards.register_onDig = awards.register_on_dig
-awards.register_onPlace = awards.register_on_place
-awards.register_onDeath = awards.register_on_death
-awards.register_onChat = awards.register_on_chat
-awards.register_onJoin = awards.register_on_join
-awards.register_onCraft = awards.register_on_craft
-
-- Trigger Handles
--
-- minetest.register_on_placenode(function(pos, node, digger)
diff --git a/unified_inventory.lua b/unified_inventory.lua
deleted file mode 100644
index 1042196..0000000
--- a/unified_inventory.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-if minetest.get_modpath("unified_inventory") ~= nil then
- local S = awards.gettext
-
- unified_inventory.register_button("awards", {
- type = "image",
- image = "awards_ui_icon.png",
- tooltip = S("Awards"),
- action = function(player)
- local name = player:get_player_name()
- awards.show_to(name, name, nil, false)
- end,
- })
-end