From d90777fdd445abfc2907ea995edfbb5492652e24 Mon Sep 17 00:00:00 2001 From: codexp Date: Fri, 13 Jul 2018 23:02:01 +0200 Subject: [PATCH] refactor common.lua: simplify code and make locale strings searchable --- stairsplus/common.lua | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/stairsplus/common.lua b/stairsplus/common.lua index a7134b2..f568535 100644 --- a/stairsplus/common.lua +++ b/stairsplus/common.lua @@ -6,35 +6,35 @@ Licensed under the zlib license. See LICENSE.md for more information. --]] local S = moreblocks.intllib +local descriptions = { + ["micro"] = S("%s Microblock"), + ["slab"] = S("%s Slab"), + ["slope"] = S("%s Slope"), + ["panel"] = S("%s Panel"), + ["stair"] = S("%s Stairs"), +} stairsplus.register_single = function(category, alternate, info, modname, subname, recipeitem, fields) - local descriptions = { - ["micro"] = "Microblock", - ["slab"] = "Slab", - ["slope"] = "Slope", - ["panel"] = "Panel", - ["stair"] = "Stairs", - } + local desc_base = descriptions[category]:format(fields.description) local def = {} + if category ~= "slab" then def = table.copy(info) end + -- copy fields to def for k, v in pairs(fields) do def[k] = v end + def.drawtype = "nodebox" - if category == "slope" then - def.drawtype = "mesh" - end def.paramtype = "light" def.paramtype2 = def.paramtype2 or "facedir" def.on_place = minetest.rotate_node - if category ~= "slab" then - def.description = S("%s " .. descriptions[category]):format(fields.description) - else - local desc_base = S("%s " .. descriptions[category]):format(fields.description) + def.groups = stairsplus:prepare_groups(fields.groups) + + if category == "slab" then if type(info) ~= "table" then def.node_box = { type = "fixed", @@ -48,14 +48,19 @@ stairsplus.register_single = function(category, alternate, info, modname, subnam } def.description = desc_base .. alternate:gsub("_", " "):gsub("(%a)(%S*)", function(a, b) return a:upper() .. b end) end + else + def.description = desc_base + if category == "slope" then + def.drawtype = "mesh" + elseif category == "stair" and alternate == "" then + def.groups.stair = 1 + end end - def.groups = stairsplus:prepare_groups(fields.groups) - if category == "stair" and alternate == "" then - def.groups.stair = 1 - end + if fields.drop and not (type(fields.drop) == "table") then def.drop = modname.. ":" .. category .. "_" .. fields.drop .. alternate end + minetest.register_node(":" ..modname.. ":" .. category .. "_" .. subname .. alternate, def) stairsplus.register_recipes(category, alternate, modname, subname, recipeitem) end \ No newline at end of file