Vanessa Ezekowitz
2017-03-10 343c7946d9014bf111e25a7a225a1b6f5746992b
commit | author | age
ee0765 1
be2f30 2 local S = technic.getter
ee0765 3
83c649 4 local cable_tier = {}
S 5
6 function technic.is_tier_cable(name, tier)
7     return cable_tier[name] == tier
8 end
9
10 function technic.get_cable_tier(name)
11     return cable_tier[name]
12 end
13
d3f40e 14 local function clear_networks(pos)
CK 15     local positions = {
16         {x=pos.x+1, y=pos.y,   z=pos.z},
17         {x=pos.x-1, y=pos.y,   z=pos.z},
18         {x=pos.x,   y=pos.y+1, z=pos.z},
19         {x=pos.x,   y=pos.y-1, z=pos.z},
20         {x=pos.x,   y=pos.y,   z=pos.z+1},
21         {x=pos.x,   y=pos.y,   z=pos.z-1}}
22     for _,connected_pos in pairs(positions) do
088eea 23         local net = technic.cables[minetest.hash_node_position(connected_pos)]
CK 24         if net and technic.networks[net] then
25             for _,v in pairs(technic.networks[net].all_nodes) do
26                 local pos1 = minetest.hash_node_position(v)
27                 technic.cables[pos1] = nil
28             end
29             technic.networks[net] = nil
d3f40e 30         end
CK 31     end
83c649 32 end
ee0765 33
S 34 function technic.register_cable(tier, size)
35     local ltier = string.lower(tier)
83c649 36     cable_tier["technic:"..ltier.."_cable"] = tier
ee0765 37
83c649 38     local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}
ee0765 39
83c649 40     local node_box = {
S 41         type = "connected",
42         fixed          = {-size, -size, -size, size,  size, size},
43         connect_top    = {-size, -size, -size, size,  0.5,  size}, -- y+
44         connect_bottom = {-size, -0.5,  -size, size,  size, size}, -- y-
45         connect_front  = {-size, -size, -0.5,  size,  size, size}, -- z-
46         connect_back   = {-size, -size,  size, size,  size, 0.5 }, -- z+
47         connect_left   = {-0.5,  -size, -size, size,  size, size}, -- x-
48         connect_right  = {-size, -size, -size, 0.5,   size, size}, -- x+
49     }
ee0765 50
83c649 51     minetest.register_node("technic:"..ltier.."_cable", {
S 52         description = S("%s Cable"):format(tier),
53         tiles = {"technic_"..ltier.."_cable.png"},
54         inventory_image = "technic_"..ltier.."_cable_wield.png",
55         wield_image = "technic_"..ltier.."_cable_wield.png",
56         groups = groups,
57         sounds = default.node_sound_wood_defaults(),
58         drop = "technic:"..ltier.."_cable",
59         paramtype = "light",
60         sunlight_propagates = true,
61         drawtype = "nodebox",
62         node_box = node_box,
63         connects_to = {"technic:"..ltier.."_cable",
64             "group:technic_"..ltier, "group:technic_all_tiers"},
65         on_construct = clear_networks,
66         on_destruct = clear_networks,
67     })
ee0765 68 end
S 69
83c649 70
S 71 local function clear_nets_if_machine(pos, node)
ee0765 72     for tier, machine_list in pairs(technic.machines) do
18cae7 73         if machine_list[node.name] ~= nil then
d3f40e 74             return clear_networks(pos)
ee0765 75         end
S 76     end
77 end
78
83c649 79 minetest.register_on_placenode(clear_nets_if_machine)
S 80 minetest.register_on_dignode(clear_nets_if_machine)
ee0765 81