From 24f08377723e63c92d06e5092fd203ccd98f70ae Mon Sep 17 00:00:00 2001 From: DS-Minetest Date: Thu, 23 Mar 2017 17:45:37 +0100 Subject: [PATCH] make the switching station able to send supply and demand via digiline --- technic/depends.txt | 2 ++ technic/machines/switching_station.lua | 39 +++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/technic/depends.txt b/technic/depends.txt index 746fe34..777e94f 100644 --- a/technic/depends.txt +++ b/technic/depends.txt @@ -2,7 +2,9 @@ default pipeworks technic_worldgen bucket? +mesecons? mesecons_mvps? +digilines? intllib? unified_inventory? vector_extras? diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua index 8ace874..546adeb 100644 --- a/technic/machines/switching_station.lua +++ b/technic/machines/switching_station.lua @@ -63,6 +63,23 @@ minetest.register_node("technic:switching_station",{ pos.y = pos.y - 1 minetest.forceload_free_block(pos) end, + mesecons = {effector = { + rules = mesecon.rules.default, + }}, + digiline = { + receptor = {action = function() end}, + effector = { + action = function(pos, node, channel, msg) + if msg == "GET" or msg == "get" then + local meta = minetest.get_meta(pos) + digilines.receptor_send(pos, digilines.rules.default, channel, { + supply = meta:get_int("supply"), + demand = meta:get_int("demand") + }) + end + end + }, + }, }) -------------------------------------------------- @@ -190,7 +207,7 @@ minetest.register_abm({ local BA_nodes local RE_nodes local machine_name = S("Switching Station") - + -- Which kind of network are we on: pos1 = {x=pos.x, y=pos.y-1, z=pos.z} @@ -216,7 +233,7 @@ minetest.register_abm({ minetest.forceload_free_block(pos1) return end - + -- Run all the nodes local function run_nodes(list, run_stage) for _, pos2 in ipairs(list) do @@ -231,7 +248,7 @@ minetest.register_abm({ end end end - + run_nodes(PR_nodes, technic.producer) run_nodes(RE_nodes, technic.receiver) run_nodes(BA_nodes, technic.battery) @@ -301,6 +318,20 @@ minetest.register_abm({ S("@1. Supply: @2 Demand: @3", machine_name, technic.pretty_num(PR_eu_supply), technic.pretty_num(RE_eu_demand))) + -- digiline + if minetest.get_modpath("mesecons") and + minetest.get_modpath("digilines") and + mesecon.is_powered(pos) then + if PR_eu_supply ~= meta:get_int("supply") or + RE_eu_demand ~= meta:get_int("demand") then + digilines.receptor_send(pos, digilines.rules.default, + "switching_station"..minetest.pos_to_string(pos), { + supply = PR_eu_supply, + demand = RE_eu_demand + }) + end + end + -- Data that will be used by the power monitor meta:set_int("supply",PR_eu_supply) meta:set_int("demand",RE_eu_demand) @@ -366,7 +397,7 @@ minetest.register_abm({ meta1 = minetest.get_meta(pos1) meta1:set_int(eu_input_str, 0) end - + end, })