From 907e8bf6a64215a516fdf16869dd81248aeaa2f6 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 17 Mar 2017 16:53:18 -0400 Subject: update digilines, technic, unified inventory, and switched castles to the new modpack form --- digilines/init.lua | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) (limited to 'digilines/init.lua') diff --git a/digilines/init.lua b/digilines/init.lua index bffd4e7..21c1c8e 100644 --- a/digilines/init.lua +++ b/digilines/init.lua @@ -1,4 +1,42 @@ -digiline = {} + +digilines = {} + +-- Backwards compatibility code. +-- We define a proxy table whose methods can be called with the +-- `foo:bar` notation, and it will redirect the call to the +-- real function, dropping the first implicit argument. +local digiline; digiline = setmetatable({}, { + __index = function(_, k) + -- Get method from real table. + local v = digilines[k] + if type(v) == "function" then + -- We need to wrap functions in order to ignore + -- the implicit `self` argument. + local f = v + return function(self, ...) + -- Trap invalid calls of the form `digiline.foo(...)`. + assert(self == digiline) + return f(...) + end + end + return v + end, +}) +rawset(_G, "digiline", digiline) + +-- Let's test our proxy table. +function digilines._testproxy(x) + return x +end + +-- Test using old `digiline:foobar` form. +assert(digiline:_testproxy("foobar") == "foobar") + +-- Test using new `digilines.foobar` form. +assert(digilines._testproxy("foobar") == "foobar") + +-- Test calling incorrect form raises an error. +assert(not pcall(function() digiline._testproxy("foobar") end)) local modpath = minetest.get_modpath("digilines") dofile(modpath .. "/presetrules.lua") @@ -7,12 +45,12 @@ dofile(modpath .. "/internal.lua") dofile(modpath .. "/wires_common.lua") dofile(modpath .. "/wire_std.lua") -function digiline:receptor_send(pos, rules, channel, msg) +function digilines.receptor_send(pos, rules, channel, msg) local checked = {} checked[minetest.hash_node_position(pos)] = true -- exclude itself for _,rule in ipairs(rules) do - if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then - digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) + if digilines.rules_link(pos, digilines.addPosRule(pos, rule)) then + digilines.transmit(digilines.addPosRule(pos, rule), channel, msg, checked) end end end -- cgit v1.2.3