From ff95845ae835457b0f2d59da0fc2f548f6095c63 Mon Sep 17 00:00:00 2001 From: dutchie031 Date: Fri, 11 Sep 2026 11:41:20 +0200 Subject: [PATCH] wip --- .luarc.json | 26 +++++++--- src/classes/_baseClasses/Queue.lua | 47 ------------------- src/classes/capClasses/airGroups/AirGroup.lua | 8 +++- src/classes/capClasses/airGroups/CapGroup.lua | 3 +- .../capClasses/airGroups/InterceptGroup.lua | 4 +- .../capClasses/airGroups/SweepGroup.lua | 3 +- .../capClasses/detection/DetectionManager.lua | 7 ++- .../runwayBombing/RunwayBombingTracker.lua | 2 + src/classes/capClasses/taskings/CAP.lua | 4 ++ src/classes/capClasses/taskings/INTERCEPT.lua | 1 + src/classes/capClasses/taskings/RTB.lua | 3 ++ src/classes/persistence/Persistence.lua | 4 ++ src/classes/util/Util.lua | 4 +- 13 files changed, 54 insertions(+), 62 deletions(-) delete mode 100644 src/classes/_baseClasses/Queue.lua diff --git a/.luarc.json b/.luarc.json index b111901..bbb66c5 100644 --- a/.luarc.json +++ b/.luarc.json @@ -4,17 +4,26 @@ "version": "Lua 5.1" }, "workspace": { - "checkThirdParty": false + "checkThirdParty": false, + "maxPreload": 1600, + "preloadFileSize": 1000 }, "diagnostics": { "enable": true, "globals": [ "lfs" ], - "severity": { - "undefined-field": "Warning", - "unused-local": "Warning", - "unused-function": "Warning" + "groupSeverity": { + "duplicate": "Warning", + "global":"Warning", + "luadoc": "Warning", + "redefined": "Warning", + "strong": "Warning", + "type-check": "Warning", + "unbalanced" : "Warning", + "ambiguity": "Warning", + "strict": "Warning", + "unused": "Warning" }, "groupFileStatus": { "ambiguity": "Any", @@ -26,8 +35,11 @@ "strict": "Any", "type-check": "Any", "unbalanced": "Any", - "unused": "Any" - } + "unused": "Any", + "strong": "Any" + }, + "ignoredFiles": "Opened", + "libraryFiles": "Opened" }, "hint": { "enable": false diff --git a/src/classes/_baseClasses/Queue.lua b/src/classes/_baseClasses/Queue.lua deleted file mode 100644 index 44b0a92..0000000 --- a/src/classes/_baseClasses/Queue.lua +++ /dev/null @@ -1,47 +0,0 @@ - ----@class Queue ----@field private _items Array ----@field private _first number ----@field private _last number -local Queue = {} -Queue.__index = Queue - ----@return Queue -function Queue.new() - - local self = setmetatable({}, Queue) - self._items = {} - self._first = 1 - self._last = 0 - return self -end - ----@return nil -function Queue:push(item) - self._last = self._last + 1 - self._items[self._last] = item -end - ----@return any? -function Queue:pop() - if self._first > self._last then - return nil - end - - local item = self._items[self._first] - self._items[self._first] = nil - self._first = self._first + 1 - return item -end - - ----@return Array -function Queue:toList() - local items = {} - for i = self._first, self._last do - items[#items + 1] = self._items[i] - end - return items -end - -return Queue \ No newline at end of file diff --git a/src/classes/capClasses/airGroups/AirGroup.lua b/src/classes/capClasses/airGroups/AirGroup.lua index 0b869bf..79b3d58 100644 --- a/src/classes/capClasses/airGroups/AirGroup.lua +++ b/src/classes/capClasses/airGroups/AirGroup.lua @@ -107,8 +107,9 @@ function AirGroup:SetMissionPrivate(mission) local points = {} if mission and mission.params and mission.params.route and mission.params.route.points then - for _, wp in pairs(mission.params.route.points) do - if wp.x and wp.y then + local routePoints = mission.params.route.points --[[@as Array ]] + for _, wp in pairs(routePoints) do + if wp and wp.x and wp.y then table.insert(points, { x = wp.x, y = wp.y }) end end @@ -198,6 +199,8 @@ function AirGroup:SpawnInternal(force, withoutLoadout) end ---@param selfA AirGroup + ---@param time number + ---@return number? local function CheckLivenessTask(selfA, time) local interval = selfA:CheckLiveness() if not interval then return end @@ -263,6 +266,7 @@ function AirGroup:OnLastUnitLanded() ---@param data CheckGroupForRestartData ---@param time number + ---@return number? local checkGroupForRestart = function(data, time) local group = Group.getByName(data.self:GetName()) if not group then diff --git a/src/classes/capClasses/airGroups/CapGroup.lua b/src/classes/capClasses/airGroups/CapGroup.lua index decd1d8..edefc93 100644 --- a/src/classes/capClasses/airGroups/CapGroup.lua +++ b/src/classes/capClasses/airGroups/CapGroup.lua @@ -34,9 +34,10 @@ function CapGroup:IsBackup() return self._isBackup end +---@param stageID string ---@return string? function CapGroup:GetZoneIDWhenStageID(stageID) - return self._targetZoneIdPerStage[stageID] + return self._targetZoneIdPerStage[tostring(stageID)] end ---@return string? diff --git a/src/classes/capClasses/airGroups/InterceptGroup.lua b/src/classes/capClasses/airGroups/InterceptGroup.lua index 8bdac36..bee6313 100644 --- a/src/classes/capClasses/airGroups/InterceptGroup.lua +++ b/src/classes/capClasses/airGroups/InterceptGroup.lua @@ -60,6 +60,7 @@ end ---comment ---@param units Array +---@param zoneName string ---@param homeAirbase Airbase function InterceptGroup:SendToInterceptUnits(units, zoneName, homeAirbase) @@ -68,9 +69,10 @@ function InterceptGroup:SendToInterceptUnits(units, zoneName, homeAirbase) self:SetTargetUnits(units) end +---@param stageID string ---@return string? function InterceptGroup:GetZoneIDWhenStageID(stageID) - return self._targetZoneIdPerStage[stageID] + return self._targetZoneIdPerStage[tostring(stageID)] end ---@return string? diff --git a/src/classes/capClasses/airGroups/SweepGroup.lua b/src/classes/capClasses/airGroups/SweepGroup.lua index ee5988a..9e18b69 100644 --- a/src/classes/capClasses/airGroups/SweepGroup.lua +++ b/src/classes/capClasses/airGroups/SweepGroup.lua @@ -26,9 +26,10 @@ function SweepGroup.New(groupName, config, logger, spawnManager) return self end +---@param stageID string ---@return string? function SweepGroup:GetZoneIDWhenStageID(stageID) - return self._targetZoneIdPerStage[stageID] + return self._targetZoneIdPerStage[tostring(stageID)] end ---@return string? diff --git a/src/classes/capClasses/detection/DetectionManager.lua b/src/classes/capClasses/detection/DetectionManager.lua index 5cef8bd..b9873e9 100644 --- a/src/classes/capClasses/detection/DetectionManager.lua +++ b/src/classes/capClasses/detection/DetectionManager.lua @@ -8,6 +8,7 @@ DetectionManager.__index = DetectionManager ---@param logger Logger +---@return DetectionManager function DetectionManager.New(logger) local self = setmetatable({}, DetectionManager) @@ -24,6 +25,7 @@ function DetectionManager.New(logger) ---@param selfA DetectionManager ---@param time number + ---@return number? local updateDetectingUnitsTask = function(selfA, time) selfA:UpdateDetectingUnits() return time + 120 @@ -32,6 +34,7 @@ function DetectionManager.New(logger) ---@param selfA DetectionManager ---@param time number + ---@return number? local updateDetected = function(selfA, time) selfA:UpdateDetectedUnits() return time + 10 @@ -43,6 +46,7 @@ end ---@param unitName string ---@param coalitionSide CoalitionSide +---@return boolean function DetectionManager:IsUnitDetectedBy(unitName, coalitionSide) local coalitionString = tostring(coalitionSide) if not self._detectedUnits[coalitionString] then @@ -56,7 +60,8 @@ function DetectionManager:IsUnitDetectedBy(unitName, coalitionSide) return timer.getTime() - self._detectedUnits[coalitionString][unitName] < 20 end ----@return Array +---@param coalitionSide CoalitionSide +---@return Array detectedUnits function DetectionManager:GetDetectedUnitsBy(coalitionSide) local coalitionString = tostring(coalitionSide) if not self._detectedUnits[coalitionString] then diff --git a/src/classes/capClasses/runwayBombing/RunwayBombingTracker.lua b/src/classes/capClasses/runwayBombing/RunwayBombingTracker.lua index f77b958..0d8e907 100644 --- a/src/classes/capClasses/runwayBombing/RunwayBombingTracker.lua +++ b/src/classes/capClasses/runwayBombing/RunwayBombingTracker.lua @@ -56,7 +56,9 @@ end ---@field self RunwayBombingTracker ---@private +---@param time number ---@param weaponTrackingArgs WeaponTrackingArgs +---@return number? function RunwayBombingTracker.trackWeaponTask(weaponTrackingArgs, time) local weapon = weaponTrackingArgs.weapon diff --git a/src/classes/capClasses/taskings/CAP.lua b/src/classes/capClasses/taskings/CAP.lua index 77c2a5f..16f2da2 100644 --- a/src/classes/capClasses/taskings/CAP.lua +++ b/src/classes/capClasses/taskings/CAP.lua @@ -84,6 +84,7 @@ end ---@param airbase Airbase ---@param capZone SpearheadTriggerZone ---@param capConfig CapConfig +---@return table local GetOutboundTask = function(airbase, capZone, capConfig) local airbaseVec3 = airbase:getPoint() local airbaseVec2 = { x = airbaseVec3.x, y = airbaseVec3.z } @@ -125,6 +126,7 @@ end ---@param airbase Airbase ---@param capZone SpearheadTriggerZone ---@param capConfig CapConfig +---@return table function CAP.getAsMissionFromAirbase(groupName, airbase, capZone, capConfig) local points = { [1] = GetOutboundTask(airbase, capZone, capConfig), @@ -152,6 +154,7 @@ end ---@param airbase Airbase ---@param capZone SpearheadTriggerZone ---@param capConfig CapConfig +---@return table function CAP.getAsMission(groupName, airbase, capZone, capConfig) local points = { [1] = CAP.getAsTasking(groupName, airbase, capZone, capConfig), @@ -178,6 +181,7 @@ end ---@param airbase Airbase ---@param capZone SpearheadTriggerZone ---@param capConfig CapConfig +---@return table function CAP.getAsTasking(groupName, airbase, capZone, capConfig) local duration = math.random(capConfig:getMinDurationOnStation(), capConfig:getMaxDurationOnStation()) or 1500 diff --git a/src/classes/capClasses/taskings/INTERCEPT.lua b/src/classes/capClasses/taskings/INTERCEPT.lua index 6c90ec4..b780f51 100644 --- a/src/classes/capClasses/taskings/INTERCEPT.lua +++ b/src/classes/capClasses/taskings/INTERCEPT.lua @@ -11,6 +11,7 @@ local INTERCEPT = {} ---@param speed number? ---@param alt number? ---@param config CapConfig +---@return table function INTERCEPT.getMissionFromAirbase(groupName, interceptPoint, airbase, config, speed, alt) local airbaseVec3 = airbase:getPoint() diff --git a/src/classes/capClasses/taskings/RTB.lua b/src/classes/capClasses/taskings/RTB.lua index 6484a91..859cd32 100644 --- a/src/classes/capClasses/taskings/RTB.lua +++ b/src/classes/capClasses/taskings/RTB.lua @@ -7,6 +7,7 @@ local RTB = {} ---@param airbase Airbase ---@param missionPoint Vec2 ---@param capConfig CapConfig +---@return table function RTB.getAsMission(airbase, missionPoint, capConfig) return { id = "Mission", @@ -113,6 +114,7 @@ end ---comment ---@param airbase Airbase ---@param missionPoint Vec2 +---@return table ---@param capConfig CapConfig function RTB.getApproachPoint(airbase, missionPoint, capConfig) @@ -147,6 +149,7 @@ function RTB.getApproachPoint(airbase, missionPoint, capConfig) end ---@param airbase Airbase +---@return table function RTB.getInitialPoint(airbase) local point = calcInitialPoint(airbase) return { diff --git a/src/classes/persistence/Persistence.lua b/src/classes/persistence/Persistence.lua index 7919936..a127e80 100644 --- a/src/classes/persistence/Persistence.lua +++ b/src/classes/persistence/Persistence.lua @@ -210,6 +210,10 @@ do local lastFile = getLastFileOrDefault(dir--[[@as string]], matchingPart, fileName) + if lastFile == nil then + lastFile = fileName + end + local fileSplit = Util.split_string(lastFile, ".") fileSplit[#fileSplit-1] = tostring(tonumber(fileSplit[#fileSplit-1]) + 1) fileName = table.concat(fileSplit, ".") diff --git a/src/classes/util/Util.lua b/src/classes/util/Util.lua index 697e7b6..d6a80d9 100644 --- a/src/classes/util/Util.lua +++ b/src/classes/util/Util.lua @@ -4,7 +4,7 @@ do -- INIT UTIL ---splits a string in sub parts by seperator ---@param input string ---@param seperator string - ---@return table result list of strings + ---@return Array result list of strings function UTIL.split_string(input, seperator) if seperator == nil then seperator = " " @@ -237,7 +237,7 @@ do -- INIT UTIL return ((vec1Norm.x * vec2Norm.x) + (vec1Norm.y * vec2Norm.y) + (vec1Norm.z * vec2Norm.z)) end - + ---@param polygon Array of pairs { x, y } ---@param x number X location ---@param y number Y location