summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWuzzy <almikes@aol.com>2016-08-07 01:39:19 +0200
committerWuzzy <almikes@aol.com>2016-08-14 23:36:12 +0200
commit15f5b8e8042c635d801320a606c214643d178062 (patch)
tree6d2f985b7b3de3b8162ffd8427233c6246a45419
parentc9d794284074dd1b3dc38a91f3dc103e5b604a4d (diff)
Craftguide: Use better tooltips for group buttons
-rw-r--r--group.lua23
-rw-r--r--locale/de.txt5
-rw-r--r--locale/template.txt8
-rw-r--r--register.lua21
4 files changed, 53 insertions, 4 deletions
diff --git a/group.lua b/group.lua
index 7f79a39..23e2587 100644
--- a/group.lua
+++ b/group.lua
@@ -1,3 +1,5 @@
+local S = unified_inventory.gettext
+
function unified_inventory.canonical_item_spec_matcher(spec)
local specname = ItemStack(spec):get_name()
if specname:sub(1, 6) == "group:" then
@@ -21,6 +23,27 @@ function unified_inventory.item_matches_spec(item, spec)
return unified_inventory.canonical_item_spec_matcher(spec)(itemname)
end
+function unified_inventory.extract_groupnames(groupname)
+ local specname = ItemStack(groupname):get_name()
+ if specname:sub(1, 6) == "group:" then
+ local group_names = specname:sub(7):split(",")
+ if #group_names == 1 then
+ return group_names[1], 1
+ end
+ local s = ""
+ for g=1,#group_names do
+ if g > 1 then
+ -- List connector
+ s = s .. S(" and ")
+ end
+ s = s .. group_names[g]
+ end
+ return s, #group_names
+ else
+ return nil, 0
+ end
+end
+
unified_inventory.registered_group_items = {
mesecon_conductor_craftable = "mesecons:wire_00000000_off",
stone = "default:cobble",
diff --git a/locale/de.txt b/locale/de.txt
index 9ca4a86..a2f7c3d 100644
--- a/locale/de.txt
+++ b/locale/de.txt
@@ -57,6 +57,8 @@ Show next usage = Nächste Verwendung zeigen
Show previous recipe = Vorheriges Rezept zeigen
Show previous usage = Vorherige Verwendung zeigen
This recipe is too\nlarge to be displayed. = Dieses Rezept ist zu\ngroß, um angezeigt\nzu werden.
+Any item belonging to the %s group = Irgendein Gegenstand, der zur Gruppe %s gehört
+Any item belonging to the groups %s = Irgendein Gegenstand, der zu den Gruppen %s gehört
Recipe %d of %d = Rezept %d von %d
Usage %d of %d = Verwendung %d von %d
No recipes = Keine Rezepte
@@ -71,6 +73,9 @@ Clear inventory = Inventar leeren
Give me: = Gib mir:
To craft grid: = Ins Fertigungsraster:
+### group.lua ###
+\sand\s=\sund\s
+
### waypoints.lua ###
White = Weiß
Yellow = Gelb
diff --git a/locale/template.txt b/locale/template.txt
index 2d58ee7..bd27f2f 100644
--- a/locale/template.txt
+++ b/locale/template.txt
@@ -60,6 +60,10 @@ Show previous recipe =
Show previous usage =
# Shown for huge crafting recipes; try to keep the line length short and use multiple line breaks as needed
This recipe is too\nlarge to be displayed. =
+# %s = group name (e.g. wool)
+Any item belonging to the %s group =
+# %s = List of “and”-concatenated group names
+Any item belonging to the groups %s =
Recipe %d of %d =
Usage %d of %d =
No recipes =
@@ -74,6 +78,10 @@ Clear inventory =
Give me: =
To craft grid: =
+### group.lua ###
+# Logical connective, example: “Any item belonging to the groups foo and bar”
+\sand\s =
+
### waypoints.lua ###
White =
Yellow =
diff --git a/register.lua b/register.lua
index 55bbdb0..ff38168 100644
--- a/register.lua
+++ b/register.lua
@@ -188,11 +188,24 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item)
selectitem = group_item.sole and displayitem or name
end
local label = show_is_group and "G" or ""
- return string.format("item_image_button[%f,%f;%f,%f;%s;%s;%s]",
+ local buttonname = minetest.formspec_escape(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem))
+ local button = string.format("item_image_button[%f,%f;%f,%f;%s;%s;%s]",
x, y, w, h,
- minetest.formspec_escape(displayitem),
- minetest.formspec_escape(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem)),
- label)
+ minetest.formspec_escape(displayitem), buttonname, label)
+ if show_is_group then
+ local groupstring, andcount = unified_inventory.extract_groupnames(name)
+ local grouptip
+ if andcount == 1 then
+ grouptip = string.format(S("Any item belonging to the %s group"), groupstring)
+ elseif andcount > 1 then
+ grouptip = string.format(S("Any item belonging to the groups %s"), groupstring)
+ end
+ grouptip = minetest.formspec_escape(grouptip)
+ if andcount >= 1 then
+ button = button .. string.format("tooltip[%s;%s]", buttonname, grouptip)
+ end
+ end
+ return button
end
local recipe_text = {