| | |
| | | return true |
| | | end |
| | | |
| | | local load_position = function(pos) |
| | | if minetest.get_node_or_nil(pos) then return end |
| | | local vm = VoxelManip() |
| | | local MinEdge, MaxEdge = vm:read_from_map(pos, pos) |
| | | end |
| | | |
| | | -- Generic function to add found connected nodes to the right classification array |
| | | local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos) |
| | | load_position(pos) |
| | | local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below) |
| | | technic.get_or_load_node(pos) |
| | | local meta = minetest.get_meta(pos) |
| | | local name = minetest.get_node(pos).name |
| | | |
| | |
| | | add_new_cable_node(PR_nodes, pos) |
| | | add_new_cable_node(RE_nodes, pos) |
| | | elseif machines[name] == "SPECIAL" and |
| | | (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) then |
| | | (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) and |
| | | from_below then |
| | | -- Another switching station -> disable it |
| | | add_new_cable_node(SP_nodes, pos) |
| | | meta:set_int("active", 0) |
| | |
| | | {x=pos.x, y=pos.y, z=pos.z-1}} |
| | | --print("ON") |
| | | for i, cur_pos in pairs(positions) do |
| | | check_node_subp(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, cur_pos, machines, tier, sw_pos) |
| | | check_node_subp(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, cur_pos, machines, tier, sw_pos, i == 3) |
| | | end |
| | | end |
| | | |
| | |
| | | -- Run all the nodes |
| | | local function run_nodes(list) |
| | | for _, pos2 in ipairs(list) do |
| | | load_position(pos2) |
| | | technic.get_or_load_node(pos2) |
| | | local node2 = minetest.get_node(pos2) |
| | | local nodedef |
| | | if node2 and node2.name then |
| | |
| | | --dprint("Total BA demand:"..BA_eu_demand) |
| | | |
| | | meta:set_string("infotext", |
| | | S("%s. Supply: %d Demand: %d"):format( |
| | | technic.format(S("%s. Supply: %e Demand: %e"), |
| | | machine_name, PR_eu_supply, RE_eu_demand)) |
| | | |
| | | -- If the PR supply is enough for the RE demand supply them all |
| | |
| | | local meta = minetest.get_meta(pos) |
| | | local timeout = meta:get_int(tier.."_EU_timeout") |
| | | if timeout <= 0 then |
| | | --meta:set_int(tier.."_EU_input", 0) -- Not needed anymore |
| | | meta:set_int(tier.."_EU_input", 0) -- Not needed anymore <-- actually, it is for supply converter |
| | | return true |
| | | else |
| | | meta:set_int(tier.."_EU_timeout", timeout - 1) |