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_noars.lua
g_brzhezinskiy 1d05caf866 init
2021-01-02 12:51:45 +03:00

109 lines
3.2 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--------------------------------------------------------------------------------
-- АРС-АЛС
--------------------------------------------------------------------------------
Metrostroi.DefineSystem("NoARS")
TRAIN_SYSTEM.DontAccelerateSimulation = true
function TRAIN_SYSTEM:Initialize()
--self.Train:LoadSystem("UOS","Relay","Switch", {bass = true})
--self.Train:LoadSystem("BPS","Relay","Switch",{ bass = true,normally_closed = true })
-- ALS state
self.Signal80 = false
self.Signal70 = false
self.Signal60 = false
self.Signal40 = false
self.Signal0 = false
self.Special = false
self.NoFreq = true
self.RealNoFreq = true
-- Internal state
self.Speed = 0
self.SpeedLimit = 0
self.NextLimit = 0
self.Ring = false
self.Overspeed = false
-- ARS wires
self["33D"] = 1
self["33G"] = 0
self["33Zh"] = 1--KAH
--
self["2"] = 0
self["20"] = 0
self["29"] = 0
--
self["31"] = 0
self["32"] = 0
self["8"] =0
-- Lamps
---self.LKT = false
self.LVD = false
end
function TRAIN_SYSTEM:Outputs()
return { "2", "8", "20", "31", "32", "29", "33D", "33G", "33Zh",
"Speed", "Signal80","Signal70","Signal60","Signal40","Signal0","Special","NoFreq","RealNoFreq",
"SpeedLimit", "NextLimit","Ring","KVT","EnableARS","EnableALS","Signal", "UAVA"}
end
function TRAIN_SYSTEM:Inputs()
return { "IgnoreThisARS","AttentionPedal","Ring" }
end
function TRAIN_SYSTEM:TriggerInput(name,value)
end
function TRAIN_SYSTEM:Think()
if self.Train.RV_2.Value < 1 then self.Train.RV_2:TriggerInput("Set",1)
end
local Train = self.Train
local tbl = Train.SubwayTrain and Train.SubwayTrain.ALS
local haveautostop = tbl and tbl.HaveAutostop
local autostop = haveautostop and Train.SpeedSign > 0 and Train.Speed > 0.1
if autostop then
local ars,arsback
self.Timer = self.Timer or CurTime()
if CurTime() - self.Timer > 1.00 then
self.Timer = CurTime()
-- Get train position
local pos = Metrostroi.TrainPositions[Train] --Metrostroi.GetPositionOnTrack(Train:GetPos(),Train:GetAngles()) --(this metod laggy for dir checks)
if pos then pos = pos[1] end
-- Get previous ARS section
if pos then
ars,arsback = Metrostroi.GetARSJoint(pos.node1,pos.x,Metrostroi.TrainDirections[Train], Train)
end
if autostop then
if IsValid(arsback) then
if arsback == self.AutostopSignal then
local ply,mode = Train:GetDriverPly()
local nomsg = hook.Run("MetrostroiPassedRed",Train,ply,mode,arsback)
Train.Pneumatic:TriggerInput("Autostop",nomsg and 0 or 1)
if not nomsg and (not IsValid(Train.FrontTrain) or not IsValid(Train.RearTrain)) then
RunConsoleCommand("say",Format("%s Passed stop %s signal [%s]",Train:GetDriverName(),arsback.InvationSignal and "InvationSignal" or "",arsback.Name))
end
self.AutostopSignal = nil
end
end
if IsValid(ars) then
if ars.AutoEnabled then
self.AutostopSignal = ars
elseif self.AutostopSignal == ars then
self.AutostopSignal = nil
end
end
end
end
end
self["33D"] = ((Train.Pneumatic and Train.Pneumatic.EmergencyValve) or self.UAVAContacts) and 0 or 1
if Train.UAVAContact and Train.UAVAContact.Value > 0.5 and not Train.Pneumatic.EmergencyValve then
self.UAVAContacts = nil
end
end