Logikraft/circuits.lua

57 lines
1.3 KiB
Lua

-- component {
-- inputs: ["in1": bit, "in2": bit, "inB": byte],
-- outputs: ["out": byte],
-- name: alu0,
-- optiCompute: fun
-- contents: {
--
-- }
-- }
function logikraft.computeCircuit(circuit, input)
end
local function has_value (tab, len, val)
for i = 1, len do
if tab[i].x == val.x and tab[i].y == val.y and tab[i].z == val.z then
return true
end
end
return false
end
function logikraft.discoverBlocks(pos)
local i = 2
local j = 1
local poz = {}
poz[1] = pos
while (j<i)
do
local p = poz[j]
j = j+1
print(dump(poz))
print(i)
print(j)
local neighbourhood = {
{x = p.x+1, y = p.y, z = p.z},
{x = p.x-1, y = p.y, z = p.z},
{x = p.x, y = p.y+1, z = p.z},
{x = p.x, y = p.y-1, z = p.z},
{x = p.x, y = p.y, z = p.z+1},
{x = p.x, y = p.y, z = p.z-1}
}
for p2=1,6
do
local n = neighbourhood[p2]
if((not has_value(poz,i-1,n)) and (minetest.get_item_group(minetest.get_node(n).name,"circuitry")==1))
then
poz[i] = n
i = i+1
end
end
end
minetest.chat_send_all("Discovered ".. (i-1) .. " blocks")
end