From dc790d0224b1b62d65d379f9f9b3afa4fb63fcf1 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sun, 19 Mar 2023 16:58:22 +0100 Subject: [PATCH] Fix issue #118 SmartLine State Collector doesn't have "running" state --- smartline/collector.lua | 14 ++++++++------ tubelib/lamp.lua | 1 + tubelib_addons2/colorlamp.lua | 27 ++++++++++++++------------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/smartline/collector.lua b/smartline/collector.lua index 658c523..fba6d3a 100644 --- a/smartline/collector.lua +++ b/smartline/collector.lua @@ -3,7 +3,7 @@ SmartLine ========= - Copyright (C) 2017-2020 Joachim Stolberg + Copyright (C) 2017-2023 Joachim Stolberg AGPL v3 See LICENSE.txt for more information @@ -19,10 +19,12 @@ local S = smartline.S local CYCLE_TIME = 1 -local tStates = {stopped = 0, running = 0, standby = 1, blocked = 2, fault = 3, defect = 4} -local tDropdownPos = {["1 standby"] = 1, ["2 blocked"] = 2 , ["3 fault"] = 3, ["4 defect"] = 4} -local lStates = {[0] = "stopped", "standby", "blocked", "fault", "defect"} - +-- The numbering seems strange here, but I had to add the "running" state +-- afterwards without changing the behavior of the block. +local tStates = {stopped = 0, running = 1, standby = 2, blocked = 3, fault = 4, defect = 5} +local tDropdownPos = {["1 standby"] = 1, ["2 blocked"] = 2, ["3 fault"] = 3, ["4 defect"] = 4} +local lStates = {[0] = "stopped", "running", "standby", "blocked", "fault", "defect"} + local function formspec(meta) local poll_numbers = meta:get_string("poll_numbers") local event_number = meta:get_string("event_number") @@ -48,7 +50,7 @@ local function send_event(meta) local severity = meta:get_int("dropdown_pos") local owner = meta:get_string("owner") local own_number = meta:get_string("own_number") - if state >= severity then + if state > severity then tubelib.send_message(event_number, owner, nil, "on", own_number) else tubelib.send_message(event_number, owner, nil, "off", own_number) diff --git a/tubelib/lamp.lua b/tubelib/lamp.lua index 0312113..e4e2b04 100644 --- a/tubelib/lamp.lua +++ b/tubelib/lamp.lua @@ -40,6 +40,7 @@ minetest.register_node("tubelib:lamp", { after_place_node = function(pos, placer) local number = tubelib.add_node(pos, "tubelib:lamp") -- <<=== tubelib local meta = minetest.get_meta(pos) + meta:set_string("number", number) meta:set_string("infotext", S("Tubelib Lamp").." "..number) end, diff --git a/tubelib_addons2/colorlamp.lua b/tubelib_addons2/colorlamp.lua index d5eb1ed..268ba10 100644 --- a/tubelib_addons2/colorlamp.lua +++ b/tubelib_addons2/colorlamp.lua @@ -41,7 +41,7 @@ minetest.register_node("tubelib_addons2:lamp", { after_place_node = function(pos, placer) local number = tubelib.add_node(pos, "tubelib_addons2:lamp") local meta = minetest.get_meta(pos) - meta:set_int("number", number) + meta:set_string("number", number) switch_node(pos, "", placer) meta:set_string("formspec", "size[3,2]".. "label[0,0;Select color]".. @@ -77,18 +77,6 @@ minetest.register_node("tubelib_addons2:lamp", { on_blast = function() end, }) -tubelib.register_node("tubelib_addons2:lamp", {}, { - on_recv_message = function(pos, topic, payload) - if topic == "on" then - local meta = minetest.get_meta(pos) - switch_node(pos, meta:get_int("color") or "", nil) - elseif topic == "off" then - switch_node(pos, "", nil) - end - end, -}) - - minetest.register_craft({ output = "tubelib_addons2:lamp 2", recipe = { @@ -98,7 +86,9 @@ minetest.register_craft({ }, }) +local NodeNames = {} for idx,color in ipairs(tColors) do + NodeNames[idx] = "tubelib_addons2:lamp"..idx minetest.register_node("tubelib_addons2:lamp"..idx, { description = S("Tubelib Color Lamp"), tiles = { @@ -132,3 +122,14 @@ for idx,color in ipairs(tColors) do on_blast = function() end, }) end + +tubelib.register_node("tubelib_addons2:lamp", NodeNames, { + on_recv_message = function(pos, topic, payload) + if topic == "on" then + local meta = minetest.get_meta(pos) + switch_node(pos, meta:get_int("color") or "", nil) + elseif topic == "off" then + switch_node(pos, "", nil) + end + end, +})