Skip to content

Commit

Permalink
Remove a bunch of extra globals
Browse files Browse the repository at this point in the history
  • Loading branch information
thecraftianman committed Jan 17, 2025
1 parent b18419e commit 91ca688
Show file tree
Hide file tree
Showing 10 changed files with 82 additions and 86 deletions.
13 changes: 1 addition & 12 deletions lua/acf/core/classes/racks/registration.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ local Classes = ACF.Classes
local Racks = Classes.Racks
local Entries = {}


function Racks.Register(ID, Data)
local Class = Classes.AddSimple(ID, Entries, Data)

Expand All @@ -23,14 +22,4 @@ function Racks.Register(ID, Data)
return Class
end

Classes.AddSimpleFunctions(Racks, Entries)

do -- Discontinued functions
function ACF_DefineRackClass(ID)
print("Attempted to register rack class " .. ID .. " with a discontinued function. Racks are no longer separated in classes.")
end

function ACF_DefineRack(ID)
print("Attempted to register rack " .. ID .. " with a discontinued function. Use ACF.RegisterRack instead.")
end
end
Classes.AddSimpleFunctions(Racks, Entries)
15 changes: 8 additions & 7 deletions lua/acf/core/utilities/entity_tracking_sv.lua
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
local ACF = ACF
local Clock = ACF.Utilities.Clock
local Contraption = ACF.Contraption
local NextUpdate = 0
local Entities = {}
local Ancestors = {}
local ACF = ACF
local Clock = ACF.Utilities.Clock
local Contraption = ACF.Contraption
local Countermeasures = ACF.Classes.Countermeasures
local NextUpdate = 0
local Entities = {}
local Ancestors = {}

local Whitelist = {
-- Garry's Mod entities
Expand Down Expand Up @@ -148,7 +149,7 @@ function ACF.GetEntitiesInCone(Position, Direction, Degrees)
for Entity in pairs(GetAncestorEntities()) do
if not IsValid(Entity) then continue end

if ACFM_ConeContainsPos(Position, Direction, Degrees, Entity:GetPos()) then
if Countermeasures.ConeContainsPos(Position, Direction, Degrees, Entity:GetPos()) then
Result[Entity] = true
end
end
Expand Down
9 changes: 5 additions & 4 deletions lua/acf/entities/ammo_types/flare.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,16 +75,17 @@ function Ammo:VerifyData(ToolData)
end

if SERVER then
local IgniteConVar = GetConVar("ACFM_FlaresIgnite")
local Ballistics = ACF.Ballistics
local Clock = ACF.Utilities.Clock
local IgniteConVar = GetConVar("ACFM_FlaresIgnite")
local Ballistics = ACF.Ballistics
local Clock = ACF.Utilities.Clock
local Countermeasures = ACF.Classes.Countermeasures

function Ammo:Create(_, BulletData)
local Bullet = Ballistics.CreateBullet(BulletData)

Bullet.CreateTime = Clock.CurTime

ACFM_RegisterFlare(Bullet)
Countermeasures.RegisterFlare(Bullet)
end

function Ammo:Network(Entity, BulletData)
Expand Down
8 changes: 4 additions & 4 deletions lua/acf/entities/countermeasure/flare.lua
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ if SERVER then
local Position = Missile:GetPos()
local Forward = Missile:GetForward()

return ACFM_ConeContainsPos(Position, Forward, SeekCone, self.Flare.Pos) and self:ApplyChance(Missile, Guidance, self.Flare)
return Countermeasures.ConeContainsPos(Position, Forward, SeekCone, self.Flare.Pos) and self:ApplyChance(Missile, Guidance, self.Flare)
end

-- counterpart to ApplyAll. this takes one Flare and applies it to all missiles.
Expand All @@ -83,7 +83,7 @@ if SERVER then
if not self.Active then return {} end

local Result = {}
local Targets = ACFM_GetAllMissilesWhichCanSee(self.Flare.Pos)
local Targets = Countermeasures.GetAllMissilesWhichCanSee(self.Flare.Pos)

for Missile in pairs(Targets) do
local Guidance = Missile.GuidanceData
Expand All @@ -97,15 +97,15 @@ if SERVER then
end

-- 'static' function to iterate over all flares in flight and return one which affects the guidance.
-- TODO: apply sub-1 chance to distract guidance in ACFM_GetAnyFlareInCone.
-- TODO: apply sub-1 chance to distract guidance in Countermeasures.GetAnyFlareInCone.
function Countermeasure.ApplyAll(Missile, Guidance)
local SeekCone = Guidance.SeekCone

if not SeekCone or SeekCone <= 0 then return end

local Position = Missile:GetPos()
local Forward = Missile:GetForward()
local Flares = ACFM_GetFlaresInCone(Position, Forward, SeekCone)
local Flares = Countermeasures.GetFlaresInCone(Position, Forward, SeekCone)

for Flare in pairs(Flares) do
local Result = Flare.FlareObj
Expand Down
92 changes: 46 additions & 46 deletions lua/acf/entities/countermeasure/globals_sv.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,85 +3,85 @@ local Countermeasures = ACF.Classes.Countermeasures
local Bullets = ACF.Ballistics.Bullets
local Missiles = ACF.ActiveMissiles

ACFM_Flares = {}
ACFM_FlareUID = 0
local Flares = {}
local FlareUID = 0

function ACFM_RegisterFlare(BulletData)
local function OnFlareSpawn(BulletData)
local FlareObj = BulletData.FlareObj
local Affected = FlareObj:ApplyToAll()

for Missile in pairs(Affected) do
Missile.GuidanceData.Override = FlareObj
end
end

function Countermeasures.RegisterFlare(BulletData)
local Flare = Countermeasures.Get("Flare")
local FlareObj = Flare()

BulletData.FlareUID = ACFM_FlareUID
BulletData.FlareUID = FlareUID

ACFM_Flares[BulletData.Index] = ACFM_FlareUID
ACFM_FlareUID = ACFM_FlareUID + 1
Flares[BulletData.Index] = FlareUID
FlareUID = FlareUID + 1

FlareObj:Configure(BulletData)

BulletData.FlareObj = FlareObj

ACFM_OnFlareSpawn(BulletData)
OnFlareSpawn(BulletData)
end

function ACFM_UnregisterFlare(BulletData)
function Countermeasures.UnregisterFlare(BulletData)
local FlareObj = BulletData.FlareObj

if FlareObj then
FlareObj.Flare = nil
end

ACFM_Flares[BulletData.Index] = nil
Flares[BulletData.Index] = nil
end

function ACFM_OnFlareSpawn(BulletData)
local FlareObj = BulletData.FlareObj
local Affected = FlareObj:ApplyToAll()

for Missile in pairs(Affected) do
Missile.GuidanceData.Override = FlareObj
end
end

function ACFM_GetFlaresInCone(Position, Direction, Degrees)
function Countermeasures.GetFlaresInCone(Position, Direction, Degrees)
local Result = {}

for Index, UID in pairs(ACFM_Flares) do
for Index, UID in pairs(Flares) do
local Flare = Bullets[Index]

if not (Flare and Flare.FlareUID and Flare.FlareUID == UID) then
continue
end

if ACFM_ConeContainsPos(Position, Direction, Degrees, Flare.Pos) then
if Countermeasures.ConeContainsPos(Position, Direction, Degrees, Flare.Pos) then
Result[Flare] = true
end
end

return Result
end

function ACFM_GetAnyFlareInCone(Position, Direction, Degrees)
for Index, UID in pairs(ACFM_Flares) do
function Countermeasures.GetAnyFlareInCone(Position, Direction, Degrees)
for Index, UID in pairs(Flares) do
local Flare = Bullets[Index]

if not (Flare and Flare.FlareUID and Flare.FlareUID == UID) then
continue
end

if ACFM_ConeContainsPos(Position, Direction, Degrees, Flare.Pos) then
if Countermeasures.ConeContainsPos(Position, Direction, Degrees, Flare.Pos) then
return Flare
end
end
end

function ACFM_GetMissilesInCone(Position, Direction, Degrees)
function Countermeasures.GetMissilesInCone(Position, Direction, Degrees)
local Result = {}

for Missile in pairs(Missiles) do
if not IsValid(Missile) then
continue
end

if ACFM_ConeContainsPos(Position, Direction, Degrees, Missile:GetPos()) then
if Countermeasures.ConeContainsPos(Position, Direction, Degrees, Missile:GetPos()) then
Result[Missile] = true
end

Expand All @@ -90,7 +90,7 @@ function ACFM_GetMissilesInCone(Position, Direction, Degrees)
return Result
end

function ACFM_GetMissilesInSphere(Position, Radius)
function Countermeasures.GetMissilesInSphere(Position, Radius)
local Result = {}
local RadiusSqr = Radius * Radius

Expand All @@ -109,7 +109,7 @@ end

-- Tests flare distraction effect upon all undistracted missiles, but does not perform the effect itself. Returns a list of potentially affected missiles.
-- argument is the bullet in the acf bullet table which represents the flare - not the cm_flare object!
function ACFM_GetAllMissilesWhichCanSee(Position)
function Countermeasures.GetAllMissilesWhichCanSee(Position)
local Result = {}

for Missile in pairs(Missiles) do
Expand All @@ -119,22 +119,33 @@ function ACFM_GetAllMissilesWhichCanSee(Position)
continue
end

if ACFM_ConeContainsPos(Missile:GetPos(), Missile:GetForward(), Guidance.ViewCone, Position) then
if Countermeasures.ConeContainsPos(Missile:GetPos(), Missile:GetForward(), Guidance.ViewCone, Position) then
Result[Missile] = true
end
end

return Result
end

function ACFM_ConeContainsPos(ConePos, ConeDir, Degrees, Position)
function Countermeasures.ConeContainsPos(ConePos, ConeDir, Degrees, Position)
local MinimumDot = math.cos(math.rad(Degrees))
local Direction = (Position - ConePos):GetNormalized()

return ConeDir:Dot(Direction) >= MinimumDot
end

function ACFM_ApplyCountermeasures(Missile, Guidance)
local function ApplyCountermeasure(Missile, Guidance, CounterMeasure)
if not CounterMeasure.AppliesTo[Guidance.Name] then return end

local Override = CounterMeasure.ApplyAll(Missile, Guidance)

if Override then
Guidance.Override = Override
return true
end
end

function Countermeasures.ApplyCountermeasures(Missile, Guidance)
if Guidance.Override then return end

local List = Countermeasures.GetList()
Expand All @@ -144,13 +155,13 @@ function ACFM_ApplyCountermeasures(Missile, Guidance)
continue
end

if ACFM_ApplyCountermeasure(Missile, Guidance, CounterMeasure) then
if ApplyCountermeasure(Missile, Guidance, CounterMeasure) then
break
end
end
end

function ACFM_ApplySpawnCountermeasures(Missile, Guidance)
function Countermeasures.ApplySpawnCountermeasures(Missile, Guidance)
if Guidance.Override then return end

local List = Countermeasures.GetList()
Expand All @@ -160,19 +171,8 @@ function ACFM_ApplySpawnCountermeasures(Missile, Guidance)
continue
end

if ACFM_ApplyCountermeasure(Missile, Guidance, CounterMeasure) then
if ApplyCountermeasure(Missile, Guidance, CounterMeasure) then
break
end
end
end

function ACFM_ApplyCountermeasure(Missile, Guidance, CounterMeasure)
if not CounterMeasure.AppliesTo[Guidance.Name] then return end

local Override = CounterMeasure.ApplyAll(Missile, Guidance)

if Override then
Guidance.Override = Override
return true
end
end
end
3 changes: 2 additions & 1 deletion lua/acf/entities/guidance/antimissile.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ local Guidance = Guidances.Register("Anti-missile", "Anti-radiation")
if CLIENT then
Guidance.Description = "This guidance package uses a radar to detect missiles and guides the munition towards the most centered one it can find."
else
local Countermeasures = ACF.Classes.Countermeasures
Guidance.RadarType = "AM-Radar"

function Guidance:GetRadar()
Expand All @@ -20,7 +21,7 @@ else

function Guidance:SeekTarget(Missile)
local Position = Missile.Position
local Targets = ACFM_GetMissilesInCone(Position, Missile:GetForward(), self.SeekCone)
local Targets = Countermeasures.GetMissilesInCone(Position, Missile:GetForward(), self.SeekCone)
local HighestDot = 0
local Target, TargetPos

Expand Down
6 changes: 4 additions & 2 deletions lua/acf/entities/guidance/dumb.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@ end
if CLIENT then
Guidance.Description = "This guidance package is empty and provides no control."
else
local Countermeasures = ACF.Classes.Countermeasures

function Guidance:OnLaunched() end

function Guidance:PreGuidance(Missile)
if not self.AppliedSpawnCountermeasures then
ACFM_ApplySpawnCountermeasures(Missile, self)
Countermeasures.ApplySpawnCountermeasures(Missile, self)

self.AppliedSpawnCountermeasures = true
end

ACFM_ApplyCountermeasures(Missile, self)
Countermeasures.ApplyCountermeasures(Missile, self)
end

function Guidance:ApplyOverride(Missile)
Expand Down
9 changes: 5 additions & 4 deletions lua/acf/entities/sensors/radars/missile.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
local ACF = ACF
local Sensors = ACF.Classes.Sensors
local ACF = ACF
local Sensors = ACF.Classes.Sensors
local Countermeasures = ACF.Classes.Countermeasures

Sensors.Register("AM-Radar", {
Name = "Missile Radar",
Expand All @@ -14,7 +15,7 @@ Sensors.Register("AM-Radar", {

do -- Directional radars
local function DetectEntities(Radar)
return ACFM_GetMissilesInCone(Radar:LocalToWorld(Radar.Origin), Radar:GetForward(), Radar.ConeDegs)
return Countermeasures.GetMissilesInCone(Radar:LocalToWorld(Radar.Origin), Radar:GetForward(), Radar.ConeDegs)
end

Sensors.RegisterItem("SmallDIR-AM", "AM-Radar", {
Expand Down Expand Up @@ -65,7 +66,7 @@ end

do -- Spherical radars
local function DetectEntities(Radar)
return ACFM_GetMissilesInSphere(Radar:LocalToWorld(Radar.Origin), Radar.Range)
return Countermeasures.GetMissilesInSphere(Radar:LocalToWorld(Radar.Origin), Radar.Range)
end

Sensors.RegisterItem("SmallOMNI-AM", "AM-Radar", {
Expand Down
Loading

0 comments on commit 91ca688

Please sign in to comment.