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

70 lines
2.2 KiB
Lua

--------------------------------------------------------------------------------
-- Last station sign helper system
--------------------------------------------------------------------------------
-- Copyright (C) 2013-2018 Metrostroi Team & FoxWorks Aerospace s.r.o.
-- Contains proprietary code. See license.txt for additional information.
--------------------------------------------------------------------------------
Metrostroi.DefineSystem("81_71_LastStation")
TRAIN_SYSTEM.DontAccelerateSimulation = true
function TRAIN_SYSTEM:Initialize(texName)
self.ID = 0
if texName then
self.TableName = texName.."_routes"
end
self.Texture = ""
end
function TRAIN_SYSTEM:Outputs()
return {}
end
function TRAIN_SYSTEM:Inputs()
return {"+","-"}
end
if TURBOSTROI then return end
if SERVER then
function TRAIN_SYSTEM:TriggerInput(name,value)
if not self.TableName then return end
local tbl = Metrostroi.Skins[self.TableName]
if tbl and name=="+" and value>0 then
self.ID = self.ID+1
if self.ID>#tbl then self.ID = 0 end
end
if tbl and name=="-" and value>0 then
self.ID = self.ID-1
if self.ID<0 then self.ID = #tbl end
end
self.Train:SetNW2Int("LastStationID",self.ID)
end
else
function TRAIN_SYSTEM:ClientInitialize(texName,entName)
self.Reloaded = false
if texName then
self.TableName = texName.."_routes"
end
self.EntityName = entName
end
function TRAIN_SYSTEM:ClientThink()
local Train = self.Train
local ent = Train.ClientEnts[self.EntityName]
if self.Reloaded and self.ID ~= Train:GetNW2Int("LastStationID",-1) then
self.ID = Train:GetNW2Int("LastStationID",-1)
self.Reloaded = false
end
if not self.TableName or not Metrostroi.Skins[self.TableName] or not ent or self.Reloaded then return end
self.Reloaded = true
local texTable = Metrostroi.Skins[self.TableName]
local tex = texTable[self.ID]
for id,texName in pairs(ent:GetMaterials()) do
if texName == texTable.default then
ent:SetSubMaterial(id-1,texTable[self.ID])
end
end
end
end