summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Zhang <azhang9@gmail.com>2012-12-15 17:53:03 -0500
committerAnthony Zhang <azhang9@gmail.com>2012-12-15 17:53:03 -0500
commitb5f5beeb3d450940e9eb465e7764ce68c6f913fd (patch)
tree0dc2f7f361a201516ec0dbb91754e919665d89ee
parent5fb5df446c89516c93a9375125cdd6ffd5db4054 (diff)
downloadmesecons-b5f5beeb3d450940e9eb465e7764ce68c6f913fd.tar
mesecons-b5f5beeb3d450940e9eb465e7764ce68c6f913fd.tar.gz
mesecons-b5f5beeb3d450940e9eb465e7764ce68c6f913fd.tar.bz2
mesecons-b5f5beeb3d450940e9eb465e7764ce68c6f913fd.tar.xz
mesecons-b5f5beeb3d450940e9eb465e7764ce68c6f913fd.zip
Attempt to update the wire crossing.
-rw-r--r--mesecons_extrawires/crossing.lua147
1 files changed, 28 insertions, 119 deletions
diff --git a/mesecons_extrawires/crossing.lua b/mesecons_extrawires/crossing.lua
index 53f12b2..2b35af1 100644
--- a/mesecons_extrawires/crossing.lua
+++ b/mesecons_extrawires/crossing.lua
@@ -1,126 +1,35 @@
-- CODE NOT ACTIVE
-for x=-1, 1 do for z=-1, 1 do
- rules = {}
- nodename = "mesecons_extrawires:crossing"
- if x == -1 then
- nodename = nodename .. "A"
- table.insert(rules, {x=-1, y=0, z=0})
- end
- if z == 1 then
- nodename = nodename .. "B"
- 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",
- description = description,
- tiles = {
- "jeija_insulated_wire_sides.png",
- },
- paramtype = "light",
- walkable = false,
- stack_max = 99,
- 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 },
- },
- node_box = {
- type = "fixed",
- fixed = {
- { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
- { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
- { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
- { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
- { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
- { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
- },
- },
- groups = groups,
- drop = drop,
- })
-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
+local crossing_get_rules = function(node)
+ --TODO: calculate the real port states and use rules to link to them only if
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_node("mesecons_extrawires:crossing_on", {
+ drawtype = "nodebox",
+ tiles = {"jeija_insulated_wire_sides.png"},
+ paramtype = "light",
+ walkable = false,
+ stack_max = 99,
+ 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}},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
+ { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
+ { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
+ { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
+ { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
+ },
+ },
+ groups = {dig_immediate=3, mesecon=3, mesecon_conductor_craftable=1, not_in_creative_inventory=1},
+ mesecons = {
+ receptor = {
+ state = mesecon.state.on,
+ rules = crossing_get_rules,
+ }
+ },
+})
minetest.register_craft({
type = "shapeless",