From bb9144e3a058f2221eb4f9d191f6eb9c0628dc59 Mon Sep 17 00:00:00 2001 From: dutchie031 Date: Fri, 14 Aug 2026 18:57:33 +0000 Subject: [PATCH 1/3] updating develop branch now automatically creates beta release (#16) Reviewed-on: https://git.dutchie031.com/Spearhead/spearhead/pulls/16 Co-authored-by: dutchie031 --- .gitea/workflows/release-beta.yml | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 .gitea/workflows/release-beta.yml diff --git a/.gitea/workflows/release-beta.yml b/.gitea/workflows/release-beta.yml new file mode 100644 index 0000000..0173bb7 --- /dev/null +++ b/.gitea/workflows/release-beta.yml @@ -0,0 +1,89 @@ +name: Publish Release + +on: + push: + branches: + - develop + paths: + - src/** + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Read Version from version.txt + id: read_version + run: | + VERSION=beta + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + echo "tag=v$VERSION" >> "$GITHUB_OUTPUT" + echo "Version: $VERSION" + + - name: Extract Release Notes + id: release_notes + run: | + VERSION=beta + RELEASE_NOTES=$(awk -v ver="Unreleased" ' + /^## \[/ { + if (found) exit + if (index($0, "[" ver "]") > 0) found = 1 + next + } + found { print } + ' RELEASENOTES.md) + + # Write multi-line output properly + echo "body<> "$GITHUB_OUTPUT" + echo "$RELEASE_NOTES" >> "$GITHUB_OUTPUT" + echo "EOF" >> "$GITHUB_OUTPUT" + + - name: Compile Spearhead + uses: https://git.dutchie031.com/dutchie031/DcsMissionScriptingTools/github-action@action/v0 + with: + source-root: ./src + output-file: ./output/spearhead.lua + + - name: Remove existing tag if it exists + id: check_tag + run: | + TAG="${{ steps.read_version.outputs.tag }}" + if git tag | grep -q "^$TAG$"; then + echo "Tag exists. Removing it..." + git push origin :refs/tags/"$TAG" || true + git tag -d "$TAG" || true + fi + echo "Ready to create fresh tag: $TAG" + + - name: Apply Tag to Current Commit + run: | + git config user.name "github-actions" + git config user.email "github-actions@github.com" + git tag ${{ steps.read_version.outputs.tag }} + git push origin ${{ steps.read_version.outputs.tag }} + + - name: Copy Release to Versioned File + run: | + cp ./output/spearhead.lua ./output/spearhead.${{ steps.read_version.outputs.tag }}.lua + echo "Versioned file created: spearhead.${{ steps.read_version.outputs.tag }}.lua" + + - name: Create Release and Upload Assets + uses: akkuman/gitea-release-action@v1 + with: + tag_name: ${{ steps.read_version.outputs.tag }} + name: Release ${{ steps.read_version.outputs.tag }} + body: ${{ steps.release_notes.outputs.body }} + prerelease: true + files: |- + ./output/spearhead.lua + ./output/spearhead.${{ steps.read_version.outputs.tag }}.lua + #token: ${{ secrets.GITHUB_TOKEN }} + env: + NODE_OPTIONS: '--experimental-fetch' + From 9e4a8a187682bfb51019cbf82715ed480cf9e317 Mon Sep 17 00:00:00 2001 From: dutchie031 Date: Thu, 13 Aug 2026 11:11:02 +0200 Subject: [PATCH 2/3] Updated wiring of supply hub commands --- config.lua | 2 +- src/classes/configuration/GlobalConfig.lua | 2 +- .../helpers/MissionCommandsHelper.lua | 51 ++++++++----------- .../helpers/SupplyUnitsTracker.lua | 23 ++++++++- .../missions/BuildableMission.lua | 2 +- 5 files changed, 44 insertions(+), 36 deletions(-) diff --git a/config.lua b/config.lua index 44014cf..cc7da67 100644 --- a/config.lua +++ b/config.lua @@ -6,7 +6,7 @@ SpearheadConfig = { --- The time briefings should be displayed by default. --- Players can always "Clear Messages" through the F10 menu, so setting it to a high value can be - briefingMessageDuration = 30, --default 30 + briefingMessageDuration = 60, --default 60 CapConfig = { --quickly enable of disable the entire CAP Logic diff --git a/src/classes/configuration/GlobalConfig.lua b/src/classes/configuration/GlobalConfig.lua index 102703c..4e5ba74 100644 --- a/src/classes/configuration/GlobalConfig.lua +++ b/src/classes/configuration/GlobalConfig.lua @@ -25,7 +25,7 @@ function GlobalConfig.New() end function GlobalConfig:getBriefingTime() - return self._briefingTime or 30 + return self._briefingTime or 60 end diff --git a/src/classes/stageClasses/helpers/MissionCommandsHelper.lua b/src/classes/stageClasses/helpers/MissionCommandsHelper.lua index a519d0f..1328af3 100644 --- a/src/classes/stageClasses/helpers/MissionCommandsHelper.lua +++ b/src/classes/stageClasses/helpers/MissionCommandsHelper.lua @@ -14,7 +14,6 @@ local SupplyConfigHelper = require("classes.stageClasses.helpers.SupplyConfigHel ---@field updateContinuous fun(self: MissionCommandsHelper, time: number): number @function to update commands continuously ---@field pinnedByGroup table @table of pinned missions by group ID ---@field private _stageBriefings table @table of stage briefings by stage name ----@field private _supplyHubGroups table @table of supply hub groups by their ID ---@field private _logger Logger @logger instance for logging ---@field private _supplyUnitsTracker SupplyUnitsTracker @supply units tracker instance local MissionCommandsHelper = {} @@ -49,11 +48,28 @@ function MissionCommandsHelper.getOrCreate(logLevel) instance.updateNeeded = false instance.pinnedByGroup = {} instance.lastUpdate = 0 - instance._supplyHubGroups = {} instance._stageBriefings = {} instance._supplyUnitsTracker = SupplyUnitsTracker.getOrCreate(logLevel) + instance._supplyUnitsTracker:AddOnSupplyUnitEventListener( + { + enteredSupplyHub = function(self, unit) + if unit == nil then return end + instance.updateNeeded = true + instance:updateCommandsForGroup(unit:getGroup():getID()) + end, + exitedSupplyHub = function(self, unit) + instance.updateNeeded = true + instance:updateCommandsForGroup(unit:getGroup():getID()) + end, + supplyUnitSpawned = function(self, unit) + instance.updateNeeded = true + instance:updateCommandsForGroup(unit:getGroup():getID()) + end + } + ) + ---comment ---@param selfA MissionCommandsHelper ---@param time number @@ -108,32 +124,6 @@ function MissionCommandsHelper:RemoveMissionToCommands(mission) self.updateNeeded = true end ----@param groupID number -function MissionCommandsHelper:MarkUnitInSupplyHub(groupID) - self._logger:debug("Marking unit in supply hub: " .. tostring(groupID)) - local updateNeeded = false - if self._supplyHubGroups[tostring(groupID)] ~= true then - updateNeeded = true - end - - self._supplyHubGroups[tostring(groupID)] = true - if updateNeeded == true then self:updateCommandsForGroup(groupID) end -end - - ----@param groupID number -function MissionCommandsHelper:MarkUnitOutsideSupplyHub(groupID) - self._logger:debug("Marking unit outide supply hub: " .. tostring(groupID)) - local updateNeeded = false - if self._supplyHubGroups[tostring(groupID)] == true then - updateNeeded = true - end - - self._supplyHubGroups[tostring(groupID)] = false - if updateNeeded == true then self:updateCommandsForGroup(groupID) end -end - - ---@param unit Unit function MissionCommandsHelper:OnPlayerEntersUnit(unit) @@ -438,7 +428,7 @@ end ---@param groupID integer function MissionCommandsHelper:AddSupplyHubCommandsIfApplicable(groupID) - if self._supplyHubGroups[tostring(groupID)] ~= true then return end + if self._supplyUnitsTracker:IsGroupLeadInSupplyHub(groupID) ~= true then return end self._logger:debug("Adding supply hub commands for group: " .. tostring(groupID)) @@ -536,8 +526,7 @@ function MissionCommandsHelper:addMissionFolders(groupId) missionCommands.addSubMenuForGroup(groupId, folderNames.primary) missionCommands.addSubMenuForGroup(groupId, folderNames.secondary) - if self._supplyHubGroups[tostring(groupId)] == true then - self._logger:debug("Adding supply hub commands folder for group: " .. tostring(groupId)) + if self._supplyUnitsTracker:IsGroupLeadInSupplyHub(groupId) == true then missionCommands.addSubMenuForGroup(groupId, folderNames.supplyHub) end diff --git a/src/classes/stageClasses/helpers/SupplyUnitsTracker.lua b/src/classes/stageClasses/helpers/SupplyUnitsTracker.lua index 7362529..7188e2d 100644 --- a/src/classes/stageClasses/helpers/SupplyUnitsTracker.lua +++ b/src/classes/stageClasses/helpers/SupplyUnitsTracker.lua @@ -94,7 +94,7 @@ end ---@param listener SupplyUnitEventListener -function SupplyUnitsTracker:AddOnSupplyUnitSpawnedListener(listener) +function SupplyUnitsTracker:AddOnSupplyUnitEventListener(listener) if listener == nil then return end if self._supplyUnitEventsListeners == nil then @@ -104,6 +104,26 @@ function SupplyUnitsTracker:AddOnSupplyUnitSpawnedListener(listener) table.insert(self._supplyUnitEventsListeners, listener) end +---@param unit Unit +---@return boolean +function SupplyUnitsTracker:IsUnitInSupplyHub(unit) + if unit == nil then return false end + local unitIDStr = tostring(unit:getID()) + return self._unitInSupplyHub[unitIDStr] == true +end + +---@param groupID number +---@return boolean +function SupplyUnitsTracker:IsGroupLeadInSupplyHub(groupID) + local group = DcsUtil.GetPlayerGroupByGroupID(groupID) + if group == nil then return false end + + local unit = group:getUnit(1) + if unit == nil then return false end + + return self:IsUnitInSupplyHub(unit) +end + function SupplyUnitsTracker:Update() local players = DcsUtil.getAllPlayerUnits() for _, player in pairs(players) do @@ -211,7 +231,6 @@ function SupplyUnitsTracker:CheckUnitsInZones() if Util.is3dPointInZone(pos, zone) then if self._unitInSupplyHub[tostring(unit:getID())] ~= true then self._unitInSupplyHub[tostring(unit:getID())] = true - for _, listener in pairs(self._supplyUnitEventsListeners) do pcall(function() if listener.enteredSupplyHub then diff --git a/src/classes/stageClasses/missions/BuildableMission.lua b/src/classes/stageClasses/missions/BuildableMission.lua index c270945..4a7a8ac 100644 --- a/src/classes/stageClasses/missions/BuildableMission.lua +++ b/src/classes/stageClasses/missions/BuildableMission.lua @@ -197,7 +197,7 @@ function BuildableMission:SpawnActive() self._state = "ACTIVE" self._missionCommandsHelper:AddMissionToCommands(self) - self._supplyUnitsTracker:AddOnSupplyUnitSpawnedListener(self) + self._supplyUnitsTracker:AddOnSupplyUnitEventListener(self) local units = self._supplyUnitsTracker:GetUnits() if units then From 9db4756732f0d3169f0bb4552154bbd2d25843f0 Mon Sep 17 00:00:00 2001 From: dutchie031 Date: Sat, 15 Aug 2026 17:02:06 +0200 Subject: [PATCH 3/3] removed settings.json --- .vscode/settings.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 7674b97..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cSpell.words": [ - "farp", - "Sams", - "SEAD" - ], - "Lua.diagnostics.globals": [ - "lfs" - ], - "maptz.regionfolder": { - "[lua]" : { - "foldEnd": "--endregion", - "foldEndRegex": "[\\s]*--endregion", - "foldStart": "--region [NAME]", - "foldStartRegex": "[\\s]*--region[\\s]*(.*)", - "disableFolding": false - } - }, - "livePreview.serverRoot": "/_docs", - "Lua.workspace.library": [ - "/Users/ex61wi/Developer/personal/DcsMissionScriptingTools/dutchies-dcs-scripting-tools/lua-addons", - "c:\\Users\\Tim\\.vscode\\extensions\\dutchie031.dutchies-dcs-scripting-tools-0.0.3\\lua-addons" - ], - "dutchies-dcs-scripting-tools.compileAt": "onSave", -} \ No newline at end of file