From 1f28ae564ef9ae6f9db82711cd2b620a8911ca88 Mon Sep 17 00:00:00 2001 From: alexandr_sizov Date: Wed, 29 Dec 2021 10:49:55 +0300 Subject: [PATCH 1/4] Add hook on change RC state --- lua/entities/gmod_track_signal/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index d0cbabf..f893250 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -200,6 +200,7 @@ function ENT:Initialize() self.PostInitalized = true self.Controllers = nil + self.OccupiedOld = false; end function ENT:PreInitalize() @@ -689,6 +690,10 @@ function ENT:Think() end end end + if self.Occupied ~= self.OccupiedOld then + hook.Run("Metrostroi.Signaling.ChangeRCState", self.Name, self.Occupied, self) + self.OccupiedOld = self.Occupied + end if self.Controllers then for k,v in pairs(self.Controllers) do if self.Sig ~= v.Sig then From d857df7db5516433eddd628eb8fb367dbbd9d9d0 Mon Sep 17 00:00:00 2001 From: alexandr_sizov Date: Wed, 29 Dec 2021 10:59:33 +0300 Subject: [PATCH 2/4] Add additional flag for check occupation in controller logic --- lua/entities/gmod_track_signal/init.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index f893250..40fc657 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -201,6 +201,7 @@ function ENT:Initialize() self.Controllers = nil self.OccupiedOld = false; + self.ControllerLogicCheckOccupied = false; end function ENT:PreInitalize() @@ -645,12 +646,15 @@ function ENT:Think() end else local number = self.RouteNumberReplace or "" - --[[self.PrevTime = self.PrevTime or 0 - if (CurTime() - self.PrevTime) > 1.0 then - self.PrevTime = CurTime()+math.random(0.5,1.5) - self:ARSLogic(self.PrevTime - CurTime()) - self:CheckOccupation() - end]] + if self.ControllerLogicCheckOccupied then + self.PrevTime = self.PrevTime or 0 + if (CurTime() - self.PrevTime) > 1.0 then + self.PrevTime = CurTime() + math.random(0.5,1.5) + if self.Node and self.TrackPosition then + self.Occupied,self.OccupiedBy,self.OccupiedByNow = Metrostroi.IsTrackOccupied(self.Node, self.TrackPosition.x,self.TrackPosition.forward,self.ARSOnly and "ars" or "light", self) + end + end + end --[[ if self.MU or self.ARSOnly or self.RouteNumberSetup and self.RouteNumberSetup ~= "" or self.RouteNumber and self.RouteNumber ~= "" then if self.NextSignalLink then From 95a27a590ebbe9e720ec598c418eeeab94184a81 Mon Sep 17 00:00:00 2001 From: alexandr_sizov Date: Wed, 29 Dec 2021 11:10:29 +0300 Subject: [PATCH 3/4] Add override 325Hz in controller logic --- lua/entities/gmod_track_signal/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index 40fc657..e87e17c 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -202,6 +202,8 @@ function ENT:Initialize() self.Controllers = nil self.OccupiedOld = false; self.ControllerLogicCheckOccupied = false; + self.ControllerLogicOverride325Hz = false; + self.Override325Hz = false; end function ENT:PreInitalize() @@ -347,6 +349,7 @@ function ENT:GetRS() if self.OverrideTrackOccupied or not self.TwoToSix or not self.ARSSpeedLimit then return false end --if self.ARSSpeedLimit == 1 or self.ARSSpeedLimit == 2 then return false end if self.ARSSpeedLimit ~= 0 and self.ARSSpeedLimit== 2 then return false end + if (self.ControllerLogic and self.ControllerLogicOverride325Hz) then return self.Override325Hz end return (self.ARSSpeedLimit > 4 or self.ARSSpeedLimit == 4 and self.Approve0) and (not self.ARSNextSpeedLimit or self.ARSNextSpeedLimit >= self.ARSSpeedLimit) end From 972d93326227b4d220c52b715b64af511e400565 Mon Sep 17 00:00:00 2001 From: Ilya Krasnow Date: Thu, 13 Jan 2022 15:54:46 +0300 Subject: [PATCH 4/4] Fix c# style code --- lua/entities/gmod_track_signal/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index e87e17c..474a4d3 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -200,10 +200,10 @@ function ENT:Initialize() self.PostInitalized = true self.Controllers = nil - self.OccupiedOld = false; - self.ControllerLogicCheckOccupied = false; - self.ControllerLogicOverride325Hz = false; - self.Override325Hz = false; + self.OccupiedOld = false + self.ControllerLogicCheckOccupied = false + self.ControllerLogicOverride325Hz = false + self.Override325Hz = false end function ENT:PreInitalize() @@ -349,7 +349,7 @@ function ENT:GetRS() if self.OverrideTrackOccupied or not self.TwoToSix or not self.ARSSpeedLimit then return false end --if self.ARSSpeedLimit == 1 or self.ARSSpeedLimit == 2 then return false end if self.ARSSpeedLimit ~= 0 and self.ARSSpeedLimit== 2 then return false end - if (self.ControllerLogic and self.ControllerLogicOverride325Hz) then return self.Override325Hz end + if self.ControllerLogic and self.ControllerLogicOverride325Hz then return self.Override325Hz end return (self.ARSSpeedLimit > 4 or self.ARSSpeedLimit == 4 and self.Approve0) and (not self.ARSNextSpeedLimit or self.ARSNextSpeedLimit >= self.ARSSpeedLimit) end @@ -750,4 +750,4 @@ net.Receive("metrostroi-signal", function(_, ply) ent:SendUpdate(ply) end) -Metrostroi.OptimisationPatch() \ No newline at end of file +Metrostroi.OptimisationPatch()