MultiSchalten.lua entfernen, Funktionalität ist jetzt Teil der On.lua
This commit is contained in:
parent
4a28547d80
commit
9ae65e50a1
@ -1,73 +0,0 @@
|
|||||||
require("kskit\\On")
|
|
||||||
|
|
||||||
-- Die Indice der Schaltverbindungen, welche eben einen Callback reinbekommen haben und geprueft werden muessen
|
|
||||||
local IndexGeaendert={}
|
|
||||||
-- Die Tabelle mit den Schaltverbindungen, die wir vom User bekommen haben
|
|
||||||
local SchaltenTabelle={}
|
|
||||||
|
|
||||||
-- Ausgabefunktion, dummy
|
|
||||||
-- Wenn Ausgabe gewuenscht, mit MultiSchaltenMelden=print ueberschreiben
|
|
||||||
function MultiSchaltenMelden(...)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Fuer jedes Dann-Element in der Tabelle registrieren wir einen Callback
|
|
||||||
-- Dank des On-Modules koennen mehrere Zeilen einen Callback auf das selbe Signal oder Weiche eintragen
|
|
||||||
function MultiSchaltenInit(Tabelle)
|
|
||||||
SchaltenTabelle=Tabelle
|
|
||||||
for k, Eintrag in pairs(Tabelle) do
|
|
||||||
-- Grobe Fehlerueberpruefung
|
|
||||||
assert(#Eintrag.Wenn % 2 == 0, "Eintrag "..k..": Wenn-Liste muss eine gerade Anzahl Elemente haben")
|
|
||||||
assert(#Eintrag.Dann % 2 == 0, "Eintrag "..k..": Dann-Liste muss eine gerade Anzahl Elemente haben")
|
|
||||||
-- Fuer jede ID in der Liste einen Callback erstellen
|
|
||||||
for i=1,#Eintrag.Wenn,2 do
|
|
||||||
local ID=Eintrag.Wenn[i]
|
|
||||||
if EEPGetSignal(ID) > 0 then
|
|
||||||
OnSignal(ID, function()
|
|
||||||
-- Hier merken wir uns den Index unserer Zeile, das wir das von der Main aus ueberpruefen
|
|
||||||
IndexGeaendert[k]=true
|
|
||||||
end)
|
|
||||||
elseif EEPGetSwitch(ID) > 0 then
|
|
||||||
OnSwitch(ID, function()
|
|
||||||
IndexGeaendert[k]=true
|
|
||||||
end)
|
|
||||||
else
|
|
||||||
error("ID "..tostring(ID).." ist nicht vergeben")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Eingegangene Callbacks auswerten
|
|
||||||
function MultiSchaltenMain()
|
|
||||||
-- Nur die Zeilen auswerten, fuer die eben ein Callback eingegangen ist
|
|
||||||
for k, _ in pairs(IndexGeaendert) do
|
|
||||||
local Eintrag=SchaltenTabelle[k]
|
|
||||||
local BedingungErfuellt=true
|
|
||||||
-- Die Bedingungen durchgehen
|
|
||||||
for i=1,#Eintrag.Wenn,2 do
|
|
||||||
local ID=Eintrag.Wenn[i]
|
|
||||||
local Soll=Eintrag.Wenn[i+1]
|
|
||||||
-- Sowohl Signal als auch Switch abfragen, wir wissen ja nicht ob die ID ein Signal oder Weiche ist
|
|
||||||
if EEPGetSignal(ID) ~= Soll and EEPGetSwitch(ID) ~= Soll then
|
|
||||||
MultiSchaltenMelden("MultiSchalten "..tostring(k)..": ",ID," ist nicht ",Soll)
|
|
||||||
BedingungErfuellt=false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Die Folgen durchgehen
|
|
||||||
if BedingungErfuellt then
|
|
||||||
for i=1,#Eintrag.Dann,2 do
|
|
||||||
local ID=Eintrag.Dann[i]
|
|
||||||
local Soll=Eintrag.Dann[i+1]
|
|
||||||
if EEPGetSignal(ID) > 0 then
|
|
||||||
MultiSchaltenMelden("MultiSchalten "..tostring(k)..": Signal ",ID," auf ",Soll)
|
|
||||||
EEPSetSignal(ID, Soll, 1)
|
|
||||||
else
|
|
||||||
MultiSchaltenMelden("MultiSchalten "..tostring(k)..": Weiche ",ID," auf ",Soll)
|
|
||||||
EEPSetSwitch(ID, Soll, 1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Gemerkte Callbacks loeschen
|
|
||||||
IndexGeaendert={}
|
|
||||||
end
|
|
Loading…
Reference in New Issue
Block a user