mirror of
https://github.com/metrostroi-repo/MetrostroiAddon.git
synced 2026-05-02 00:42:29 +00:00
init
This commit is contained in:
108
lua/metrostroi/systems/_obsolete/sys_noars.lua
Normal file
108
lua/metrostroi/systems/_obsolete/sys_noars.lua
Normal file
@@ -0,0 +1,108 @@
|
||||
--------------------------------------------------------------------------------
|
||||
-- АРС-АЛС
|
||||
--------------------------------------------------------------------------------
|
||||
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
|
||||
Reference in New Issue
Block a user