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

37 lines
1002 B
Lua

ENT.Type = "anim"
ENT.PrintName = "Horizontal Lift Station Signalling"
ENT.Category = "Metrostroi (utility)"
ENT.Spawnable = false
ENT.AdminSpawnable = false
--------------------------------------------------------------------------------
function ENT:SetupDataTables()
self:NetworkVar("Int", 0, "ActiveSignals")
end
local function addBitField(name)
ENT["Set"..name.."Bit"] = function(self,idx,value)
local packed_value = bit.lshift(value and 1 or 0,idx)
local mask = bit.bnot(bit.lshift(1,idx))
self["Set"..name](self,bit.bor(bit.band(self["Get"..name](self),mask),packed_value))
end
ENT["Get"..name.."Bit"] = function(self,idx)
local mask = bit.lshift(1,idx)
return bit.band(self["Get"..name](self),mask) ~= 0
end
end
local function addBitParameter(name,field,bit)
ENT["Set"..name] = function(self,value)
self["Set"..field.."Bit"](self,bit,value)
end
ENT["Get"..name] = function(self)
return self["Get"..field.."Bit"](self,bit)
end
end
addBitField("ActiveSignals")