The circuitry now really computes the circuit
This commit is contained in:
+1
-50
@@ -6,59 +6,10 @@ local function remove_no_destruct(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
end
|
||||
|
||||
-- Everything is described as if dir=0
|
||||
-- z+
|
||||
-- /|\ w
|
||||
-- | XXX h
|
||||
-- +−−−−−−−−−−−> x+
|
||||
-- {name,width,height,{cables_left,cables_right,cables_top,cables_bottom}}
|
||||
logikraft.components = {
|
||||
["and"] = {
|
||||
width = 2,
|
||||
height = 3,
|
||||
ports = {
|
||||
left = {"in_2",nil,"in_1"},
|
||||
right = {nil,"out",nil}
|
||||
}
|
||||
},
|
||||
["switch"] = {
|
||||
width = 2,
|
||||
height = 1,
|
||||
ports = {
|
||||
left = {"in"},
|
||||
right = {"out"},
|
||||
top = {"activate",nil}
|
||||
}
|
||||
},
|
||||
["demux"] = {
|
||||
width = 2,
|
||||
height = 8,
|
||||
ports = {
|
||||
left = {nil,nil,nil,nil,nil,"in_3","in_2","in_1"},
|
||||
right = {"out_8","out_7","out_6","out_5","out_4","out_3","out_2","out_1"}
|
||||
}
|
||||
},
|
||||
["input"] = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
ports = {
|
||||
right = {"out"}
|
||||
}
|
||||
},
|
||||
["output"] = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
ports = {
|
||||
left = {"in"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-- componentsblocks["block"] = {name = Name of the component,x,y}
|
||||
logikraft.componentnodes = {}
|
||||
|
||||
for name,cmp in pairs(logikraft.components)
|
||||
do
|
||||
function logikraft.registerComponent(name,cmp)
|
||||
local w = cmp.width
|
||||
local h = cmp.height
|
||||
local cables = cmp.ports
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
-- Everything is described as if dir=0
|
||||
-- z+
|
||||
-- /|\ w
|
||||
-- | XXX h
|
||||
-- +−−−−−−−−−−−> x+
|
||||
-- {name,width,height,{cables_left,cables_right,cables_top,cables_bottom}}
|
||||
logikraft.components = {
|
||||
["and"] = {
|
||||
width = 2,
|
||||
height = 3,
|
||||
ports = {
|
||||
left = {"in_2",nil,"in_1"},
|
||||
right = {nil,"out",nil}
|
||||
},
|
||||
inputs = {"in_1","in_2"},
|
||||
outputs = {"out"},
|
||||
compute = function(inz) return {out = (inz["in_1"] * inz["in_2"] == 0) and 0 or 1} end
|
||||
},
|
||||
["switch"] = {
|
||||
width = 2,
|
||||
height = 1,
|
||||
ports = {
|
||||
left = {"in"},
|
||||
right = {"out"},
|
||||
top = {"activate",nil}
|
||||
},
|
||||
inputs = {"in","activate"},
|
||||
outputs = {"out"},
|
||||
compute = function(inz) if inz["activate"]==1 then return {out = inz["in"]} else return {} end end
|
||||
},
|
||||
["demux"] = {
|
||||
width = 2,
|
||||
height = 8,
|
||||
ports = {
|
||||
left = {nil,nil,nil,nil,nil,"in_3","in_2","in_1"},
|
||||
right = {"out_8","out_7","out_6","out_5","out_4","out_3","out_2","out_1"}
|
||||
},
|
||||
inputs = {"in_1","in_2","in_3"},
|
||||
outputs = {"out_8","out_7","out_6","out_5","out_4","out_3","out_2","out_1"}
|
||||
},
|
||||
["input"] = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
ports = {
|
||||
right = {"out"}
|
||||
},
|
||||
inputs = {},
|
||||
outputs = {"out"}
|
||||
},
|
||||
["output"] = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
ports = {
|
||||
left = {"in"}
|
||||
},
|
||||
inputs = {"in"},
|
||||
outputs = {}
|
||||
}
|
||||
}
|
||||
|
||||
for name,cmp in pairs(logikraft.components)
|
||||
do
|
||||
logikraft.registerComponent(name,cmp)
|
||||
end
|
||||
Reference in New Issue
Block a user