dobrograd-13-06-2022/garrysmod/addons/feature-wire/lua/entities/gmod_wire_hologrid.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

74 lines
1.7 KiB
Lua

AddCSLuaFile()
DEFINE_BASECLASS( "base_wire_entity" )
ENT.PrintName = "Wire Holo Grid"
ENT.Author = "Chad 'Jinto'"
ENT.WireDebugName = "Holo Grid"
if CLIENT then return end -- No more client
function ENT:Initialize( )
self:PhysicsInit( SOLID_VPHYSICS );
self:SetMoveType( MOVETYPE_VPHYSICS );
self:SetSolid( SOLID_VPHYSICS );
self:SetUseType(SIMPLE_USE)
self:Setup(false)
-- create inputs.
self.Inputs = WireLib.CreateSpecialInputs(self, { "UseGPS", "Reference" }, { "NORMAL", "ENTITY" })
self.reference = self
end
function ENT:Setup(UseGPS)
if UseGPS then
self.usesgps = true
self:SetNWEntity( "reference", ents.GetByIndex(-1) )
self:SetOverlayText( "(GPS)" )
else
self.usesgps = false
self:SetNWEntity( "reference", self.reference )
self:SetOverlayText( "(Local)" )
end
end
function ENT:TriggerInput( inputname, value )
-- store values.
if inputname == "UseGPS" then
self:Setup(value ~= 0)
elseif inputname == "Reference" then
if IsValid(value) then
self.reference = value
else
self.reference = self
end
self:Setup(self.usesgps)
end
end
function ENT:Use( activator, caller )
if caller:IsPlayer() then self:Setup(not self.usesgps) end
end
duplicator.RegisterEntityClass("gmod_wire_hologrid", WireLib.MakeWireEnt, "Data", "usegps")
function ENT:BuildDupeInfo()
local info = BaseClass.BuildDupeInfo(self) or {}
info.hologrid_usegps = self.usesgps and 1 or 0
if IsValid(self.reference) then
info.reference = self.reference:EntIndex()
else
info.reference = nil
end
return info
end
function ENT:ApplyDupeInfo(ply, ent, info, GetEntByID)
BaseClass.ApplyDupeInfo(self, ply, ent, info, GetEntByID)
self.reference = GetEntByID(info.reference, self)
self:Setup(info.hologrid_usegps ~= 0)
end