Add optional default description for triggers

This commit is contained in:
Wuzzy 2016-08-30 14:08:19 +02:00 committed by rubenwardy
parent 67946bf0c4
commit 13eb5dcdae
2 changed files with 68 additions and 9 deletions

@ -140,6 +140,11 @@ function awards.register_achievement(name, def)
-- Add Award -- Add Award
awards.def[name] = def awards.def[name] = def
local tdef = awards.def[name]
if def.description == nil and tdef.getDefaultDescription then
def.description = tdef:getDefaultDescription()
end
end end
function awards.enable(name) function awards.enable(name)

@ -26,7 +26,7 @@ awards.register_trigger("dig", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
node = def.trigger.node, node = def.trigger.node,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.dig, tmp) table.insert(awards.on.dig, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
@ -36,13 +36,25 @@ awards.register_trigger("dig", function(def)
label = string.format(S("%d/%d dug"), itemcount, tmp.target) label = string.format(S("%d/%d dug"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
local nname = minetest.registered_nodes[self.trigger.node].description
if nname == nil then
nname = self.trigger.node
end
local ddesc
if self.trigger.target ~= 1 then
return string.format(S("Mine blocks: %d×%s"), self.trigger.target, nname)
else
return string.format(S("Mine a block: %s"), nname)
end
end
end) end)
awards.register_trigger("place", function(def) awards.register_trigger("place", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
node = def.trigger.node, node = def.trigger.node,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.place, tmp) table.insert(awards.on.place, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
@ -52,12 +64,23 @@ awards.register_trigger("place", function(def)
label = string.format(S("%d/%d placed"), itemcount, tmp.target) label = string.format(S("%d/%d placed"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
local nname = minetest.registered_nodes[self.trigger.node].description
if nname == nil then
nname = self.trigger.node
end
if self.trigger.target ~= 1 then
return string.format(S("Place blocks: %d×%s"), self.trigger.target, nname)
else
return string.format(S("Place a block: %s"), nname)
end
end
end) end)
awards.register_trigger("death", function(def) awards.register_trigger("death", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.death, tmp) table.insert(awards.on.death, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
@ -67,30 +90,43 @@ awards.register_trigger("death", function(def)
label = string.format(S("%d/%d deaths"), itemcount, tmp.target) label = string.format(S("%d/%d deaths"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
if self.trigger.target ~= 1 then
return string.format(S("Die %d times."), self.trigger.target)
else
return S("Die.")
end
end
end) end)
awards.register_trigger("chat", function(def) awards.register_trigger("chat", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.chat, tmp) table.insert(awards.on.chat, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
local itemcount = data.chats or 0 local itemcount = data.chats or 0
return { return {
perc = itemcount / tmp.target, perc = itemcount / tmp.target,
label = string.format(S("%d/%d lines of chat"), itemcount, tmp.target) label = string.format(S("%d/%d chat messages"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
if self.trigger.target ~= 1 then
return string.format(S("Write %d chat messages."), self.trigger.target)
else
return S("Write something in chat.")
end
end
end) end)
awards.register_trigger("join", function(def) awards.register_trigger("join", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.join, tmp) table.insert(awards.on.join, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
local itemcount = data.joins or 0 local itemcount = data.joins or 0
return { return {
@ -98,13 +134,20 @@ awards.register_trigger("join", function(def)
label = string.format(S("%d/%d game joins"), itemcount, tmp.target) label = string.format(S("%d/%d game joins"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
if self.trigger.target ~= 1 then
return string.format(S("Join the game %d times."), self.trigger.target)
else
return S("Join the game.")
end
end
end) end)
awards.register_trigger("craft", function(def) awards.register_trigger("craft", function(def)
local tmp = { local tmp = {
award = def.name, award = def.name,
item = def.trigger.item, item = def.trigger.item,
target = def.trigger.target target = def.trigger.target,
} }
table.insert(awards.on.craft, tmp) table.insert(awards.on.craft, tmp)
def.getProgress = function(self, data) def.getProgress = function(self, data)
@ -114,6 +157,17 @@ awards.register_trigger("craft", function(def)
label = string.format(S("%d/%d crafted"), itemcount, tmp.target) label = string.format(S("%d/%d crafted"), itemcount, tmp.target)
} }
end end
def.getDefaultDescription = function(self)
local iname = minetest.registered_items[self.trigger.item].description
if iname == nil then
iname = self.trigger.item
end
if self.trigger.target ~= 1 then
return string.format(S("Craft: %d×%s"), self.trigger.target, iname)
else
return string.format(S("Craft: %s"), iname)
end
end
end) end)
-- Backwards compatibility -- Backwards compatibility