1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
Files
MetrostroiAddon/lua/metrostroi/systems/_obsolete/sys_alstest.lua
g_brzhezinskiy 1d05caf866 init
2021-01-02 12:51:45 +03:00

107 lines
2.5 KiB
Lua

--------------------------------------------------------------------------------
-- Статив и приёмные катушки АЛС
--------------------------------------------------------------------------------
Metrostroi.DefineSystem("ALSTest")
TRAIN_SYSTEM.DontAccelerateSimulation = true
function TRAIN_SYSTEM:Initialize()
self.Train:LoadSystem("F6","Relay","Switch",{ bass = true })
self.Train:LoadSystem("F5","Relay","Switch",{ bass = true })
self.Train:LoadSystem("F4","Relay","Switch",{ bass = true })
self.Train:LoadSystem("F3","Relay","Switch",{ bass = true })
self.Train:LoadSystem("F2","Relay","Switch",{ bass = true })
self.Train:LoadSystem("F1","Relay","Switch",{ bass = true })
self.Train:LoadSystem("NF","Relay","Switch",{ bass = true })
self.Train:LoadSystem("SpeedAdd","Relay","Switch",{ bass = true })
self.Train:LoadSystem("SpeedRem","Relay","Switch",{ bass = true })
self.TriggerNames = {
"F6",
"F5",
"F4",
"F3",
"F2",
"F1",
"NF",
"SpeedAdd",
"SpeedRem",
}
self.Triggers = {}
for k,v in pairs(self.TriggerNames) do
if self.Train[v] then self.Triggers[v] = self.Train[v].Value > 0.5 end
end
self.Speed = 0
self.Acceleration = 0
-- ALS state
self.F1 = 0
self.F2 = 0
self.F3 = 0
self.F4 = 0
self.F5 = 0
self.F6 = 0
self.NoFreq = 1
self.NoFreqTimer = nil
self.RealF5 = 1
self.Speed = 0
self.SpeedSign = 0
end
function TRAIN_SYSTEM:Outputs()
return {
}
end
function TRAIN_SYSTEM:Inputs()
return {"Enable"}
end
function TRAIN_SYSTEM:TriggerInput(name,value)
if name == "Enable" then
self.Enabled = value
end
end
function TRAIN_SYSTEM:Trigger(name,value)
local Train = self.Train
if name == "SpeedAdd" then
self.Speed = self.Speed + 2.5
return
end
if name == "SpeedRem" then
self.Speed = self.Speed - 2.5
return
end
if not value then return end
if name == "F6" then
self.F6 = 1-self.F6
return
end
if name == "NF" then
self.F6 = 0
self.F5 = 0
self.F4 = 0
self.F3 = 0
self.F2 = 0
self.F1 = 0
self.NoFreq = 1
return
end
self.F5 = name =="F5" and 1 or 0
self.F4 = name =="F4" and 1 or 0
self.F3 = name =="F3" and 1 or 0
self.F2 = name =="F2" and 1 or 0
self.F1 = name =="F1" and 1 or 0
self.NoFreq = 0
end
function TRAIN_SYSTEM:Think(dT)
local Train = self.Train
for k,v in pairs(self.TriggerNames) do
if Train[v] and (Train[v].Value > 0.5) ~= self.Triggers[v] then
self:Trigger(v,Train[v].Value > 0.5)
self.Triggers[v] = Train[v].Value > 0.5
end
end
end