Attempt to update the wire crossing.

This commit is contained in:
Anthony Zhang 2012-12-15 17:53:03 -05:00
parent 5fb5df446c
commit b5f5beeb3d

@ -1,48 +1,16 @@
-- CODE NOT ACTIVE -- CODE NOT ACTIVE
for x=-1, 1 do for z=-1, 1 do local crossing_get_rules = function(node)
rules = {} --TODO: calculate the real port states and use rules to link to them only if
nodename = "mesecons_extrawires:crossing"
if x == -1 then
nodename = nodename .. "A"
table.insert(rules, {x=-1, y=0, z=0})
end end
if z == 1 then
nodename = nodename .. "B" minetest.register_node("mesecons_extrawires:crossing_on", {
table.insert(rules, {x=0, y=0, z=1})
end
if x == 1 then
nodename = nodename .. "C"
table.insert(rules, {x=1, y=0, z=0})
end
if z == -1 then
nodename = nodename .. "D"
table.insert(rules, {x=0, y=0, z=-1})
end
mesecon:add_rules(nodename, rules)
mesecon:register_effector(nodename, nodename, all_rules)
if nodename == "mesecons_extrawires:crossing" then
description = "Insulated Crossing"
groups = {dig_immediate = 3, mesecon = 3, mesecon_conductor_craftable=1}
else
description = "You hacker you!"
drop = "mesecons_extrawires:crossing"
groups = {dig_immediate = 3, not_in_creative_inventory=1, mesecon = 3}
mesecon:add_receptor_node(nodename, rules)
end
minetest.register_node(nodename, {
drawtype = "nodebox", drawtype = "nodebox",
description = description, tiles = {"jeija_insulated_wire_sides.png"},
tiles = {
"jeija_insulated_wire_sides.png",
},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
stack_max = 99, stack_max = 99,
selection_box = { selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
type = "fixed",
fixed = { -16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001 },
},
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -54,73 +22,14 @@ for x=-1, 1 do for z=-1, 1 do
{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
}, },
}, },
groups = groups, groups = {dig_immediate=3, mesecon=3, mesecon_conductor_craftable=1, not_in_creative_inventory=1},
drop = drop, mesecons = {
receptor = {
state = mesecon.state.on,
rules = crossing_get_rules,
}
},
}) })
end end
function receptor_set(pos, rules, on)
if on then
mesecon:receptor_on(pos, rules)
else
mesecon:receptor_off(pos, rules)
end
end
function update_plus(pos, name)
vL = {
a = string.find(name, "A")~=nil,
b = string.find(name, "B")~=nil,
c = string.find(name, "C")~=nil,
d = string.find(name, "D")~=nil,
}
rL = yc_get_real_portstates(pos)
L = {
a = rL.c and not vL.c,
b = rL.d and not vL.d,
c = rL.a and not vL.a,
d = rL.b and not vL.b,
}
newname = "mesecons_extrawires:crossing"
if L.a then newname = newname .. "A" end
if L.b then newname = newname .. "B" end
if L.c then newname = newname .. "C" end
if L.d then newname = newname .. "D" end
if newname ~= name then
minetest.env:add_node(pos, {name = newname})
end
if L.a ~= vL.a then
receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingA"), L.a)
if not L.a and yc_get_real_portstates(pos).a then
--catch signal changing direction while on
update_plus(pos, newname)
end
end
if L.b ~= vL.b then
receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingB"), L.b)
if not L.b and yc_get_real_portstates(pos).b then
update_plus(pos, newname)
end
end
if L.c ~= vL.c then
receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingC"), L.c)
if not L.c and yc_get_real_portstates(pos).c then
update_plus(pos, newname)
end
end
if L.d ~= vL.d then
receptor_set(pos, mesecon:get_rules("mesecons_extrawires:crossingD"), L.d)
if not L.c and yc_get_real_portstates(pos).d then
update_plus(pos, newname)
end
end
end
mesecon:register_on_signal_change(function(pos, node)
if string.find(node.name, "mesecons_extrawires:crossing")~=nil then
update_plus(pos, node.name)
end
end)
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",