Cap rework (#48)

- Refactored all CAP classes.
- Improved timing
- Zones are now not tied to MissionStages
  - CAPROUTE_<routeID>_<free>
  - routeID is now what is used in the naming convention.
- Units taxi back to their spawn parking space and rearm there.
  (Units destroyed while in the Rearming or Repairing state are not taken into account)
This commit is contained in:
2025-06-01 18:58:35 +02:00
committed by GitHub
parent 059081890d
commit 0233b9e2d7
21 changed files with 1519 additions and 832 deletions
+77 -35
View File
@@ -1,56 +1,98 @@
---@class CapConfig
---@field private _isEnabled boolean
---@field private _minSpeed number
---@field private _maxSpeed number
---@field private _minAlt number
---@field private _maxAlt number
---@field private _minDurationOnStation number
---@field private _maxDurationOnStation number
---@field private _maxDeviationRange number
---@field private _rearmDelay number
---@field private _repairDelay number
---@field private _deathDelay number
local CapConfig = {};
function CapConfig:new()
local o = {}
setmetatable(o, { __index = self })
CapConfig.__index = CapConfig
---@return CapConfig
function CapConfig.new()
local self = setmetatable({}, CapConfig)
if SpearheadConfig == nil then SpearheadConfig = {} end
if SpearheadConfig.CapConfig == nil then SpearheadConfig.CapConfig = {} end
local enabled = SpearheadConfig.CapConfig.enabled
if enabled == nil then enabled = true end
---@return boolean
o.isEnabled = function(self) return enabled == true end
self._isEnabled = enabled
local minSpeed = (tonumber(SpearheadConfig.CapConfig.minSpeed) or 400) * 0.514444
---@return number
o.getMinSpeed = function(self) return minSpeed end
self._minSpeed = (tonumber(SpearheadConfig.CapConfig.minSpeed) or 400) * 0.514444
self._maxSpeed = (tonumber(SpearheadConfig.CapConfig.maxSpeed) or 400) * 0.514444
local maxSpeed = (tonumber(SpearheadConfig.CapConfig.maxSpeed) or 400) * 0.514444
---@return number
o.getMaxSpeed = function(self) return maxSpeed end
self._minAlt = (tonumber(SpearheadConfig.CapConfig.minAlt) or 18000) * 0.3048
self._maxAlt = (tonumber(SpearheadConfig.CapConfig.maxAlt) or 28000) * 0.3048
local minAlt = (tonumber(SpearheadConfig.CapConfig.minAlt) or 18000) * 0.3048
---@return number
o.getMinAlt = function(self) return minAlt end
self._minDurationOnStation = 1200
self._maxDurationOnStation = 2700
local maxAlt = (tonumber(SpearheadConfig.CapConfig.maxAlt) or 28000) * 0.3048
---@return number
o.getMaxAlt = function(self) return maxAlt end
self._maxDeviationRange = 35 * 1852 -- in meters
self._rearmDelay = tonumber(SpearheadConfig.CapConfig.rearmDelay) or 600
self._repairDelay = tonumber(SpearheadConfig.CapConfig.repairDelay) or 600
self._deathDelay = tonumber(SpearheadConfig.CapConfig.deathDelay) or 1800
local minDurationOnStation = 1200
---@return number
o.getMinDurationOnStation = function(self) return minDurationOnStation end
return self;
end
local maxDurationOnStation = 2700
---@return number
o.getmaxDurationOnStation = function(self) return maxDurationOnStation end
function CapConfig:isEnabled()
return self._isEnabled
end
local maxDeviationRange = 20 * 1852;
---@return number
o.getMaxDeviationRange = function(self) return maxDeviationRange end
---@return number
function CapConfig:getMinSpeed()
return self._minSpeed
end
local rearmDelay = tonumber(SpearheadConfig.CapConfig.rearmDelay) or 600
---@return number
o.getRearmDelay = function(self) return rearmDelay end
---@return number
function CapConfig:getMaxSpeed()
return self._maxSpeed
end
local deathDelay = tonumber(SpearheadConfig.CapConfig.deathDelay) or 1800
---@return number
o.getDeathDelay = function(self) return deathDelay end
o.logLevel = "INFO"
---@return number
function CapConfig:getMinAlt()
return self._minAlt
end
return o;
---@return number
function CapConfig:getMaxAlt()
return self._maxAlt
end
---@return number
function CapConfig:getMinDurationOnStation()
return self._minDurationOnStation
end
---@return number
function CapConfig:getMaxDurationOnStation()
return self._maxDurationOnStation
end
---@return number
function CapConfig:getMaxDeviationRange()
return self._maxDeviationRange
end
---@return number
function CapConfig:getRearmDelay()
return self._rearmDelay
end
function CapConfig:getRepairDelay()
return self._repairDelay
end
---@return number
function CapConfig:getDeathDelay()
return self._deathDelay
end
if not Spearhead.internal then Spearhead.internal = {} end