From 77b0f9b5e8aec591fedd619d598303d03ee73b8b Mon Sep 17 00:00:00 2001
From: iTracerFacer <134304944+iTracerFacer@users.noreply.github.com>
Date: Sun, 9 Nov 2025 11:13:30 -0600
Subject: [PATCH] Fixed major crash bug (call to undefined function). and major
performance tweaks around the hover coach.
---
Moose_CTLD_Pure/Moose_CTLD.lua | 171 ++++++++++++++++++++++++++--
Moose_CTLD_Pure/Moose_CTLD_Pure.miz | Bin 1639368 -> 1640800 bytes
2 files changed, 161 insertions(+), 10 deletions(-)
diff --git a/Moose_CTLD_Pure/Moose_CTLD.lua b/Moose_CTLD_Pure/Moose_CTLD.lua
index 3d5e0f5..6df3b29 100644
--- a/Moose_CTLD_Pure/Moose_CTLD.lua
+++ b/Moose_CTLD_Pure/Moose_CTLD.lua
@@ -745,6 +745,9 @@ CTLD._msgState = { } -- messaging throttle state: [scopeKey] = { lastKeyT
CTLD._buildConfirm = {} -- [groupName] = time of first build request (awaiting confirmation)
CTLD._buildCooldown = {} -- [groupName] = time of last successful build
CTLD._NextMarkupId = 10000 -- global-ish id generator shared by instances for map drawings
+-- Spatial indexing for hover pickup performance
+CTLD._spatialGrid = CTLD._spatialGrid or {} -- [gridKey] = { crates = {name->meta}, troops = {name->meta} }
+CTLD._spatialGridSize = 500 -- meters per grid cell (tunable based on hover pickup distance)
-- Inventory state
CTLD._stockByZone = CTLD._stockByZone or {} -- [zoneName] = { [crateKey] = count }
CTLD._inStockMenus = CTLD._inStockMenus or {} -- per-group filtered menu handles
@@ -764,6 +767,67 @@ CTLD._medevacStats = CTLD._medevacStats or { -- [coalition.side] = { spawne
-- Utilities
-- =========================
-- #region Utilities
+
+-- Spatial indexing helpers for performance optimization
+local function _getSpatialGridKey(x, z)
+ local gridSize = CTLD._spatialGridSize or 500
+ local gx = math.floor(x / gridSize)
+ local gz = math.floor(z / gridSize)
+ return string.format("%d_%d", gx, gz)
+end
+
+local function _addToSpatialGrid(name, meta, itemType)
+ if not meta or not meta.point then return end
+ local key = _getSpatialGridKey(meta.point.x, meta.point.z)
+ CTLD._spatialGrid[key] = CTLD._spatialGrid[key] or { crates = {}, troops = {} }
+ if itemType == 'crate' then
+ CTLD._spatialGrid[key].crates[name] = meta
+ elseif itemType == 'troops' then
+ CTLD._spatialGrid[key].troops[name] = meta
+ end
+end
+
+local function _removeFromSpatialGrid(name, point, itemType)
+ if not point then return end
+ local key = _getSpatialGridKey(point.x, point.z)
+ local cell = CTLD._spatialGrid[key]
+ if cell then
+ if itemType == 'crate' then
+ cell.crates[name] = nil
+ elseif itemType == 'troops' then
+ cell.troops[name] = nil
+ end
+ -- Clean up empty cells
+ if not next(cell.crates) and not next(cell.troops) then
+ CTLD._spatialGrid[key] = nil
+ end
+ end
+end
+
+local function _getNearbyFromSpatialGrid(x, z, maxDistance)
+ local gridSize = CTLD._spatialGridSize or 500
+ local cellRadius = math.ceil(maxDistance / gridSize) + 1
+ local centerGX = math.floor(x / gridSize)
+ local centerGZ = math.floor(z / gridSize)
+
+ local nearby = { crates = {}, troops = {} }
+ for dx = -cellRadius, cellRadius do
+ for dz = -cellRadius, cellRadius do
+ local key = string.format("%d_%d", centerGX + dx, centerGZ + dz)
+ local cell = CTLD._spatialGrid[key]
+ if cell then
+ for name, meta in pairs(cell.crates) do
+ nearby.crates[name] = meta
+ end
+ for name, meta in pairs(cell.troops) do
+ nearby.troops[name] = meta
+ end
+ end
+ end
+ end
+ return nearby
+end
+
local function _isIn(list, value)
for _,v in ipairs(list or {}) do if v == value then return true end end
return false
@@ -4094,6 +4158,9 @@ function CTLD:RequestCrateForGroup(group, crateKey)
requester = group:GetName(),
}
+ -- Add to spatial index for efficient hover pickup scanning
+ _addToSpatialGrid(cname, CTLD._crates[cname], 'crate')
+
-- Now that crate is created, spawn smoke with refresh scheduling if enabled
if zone then
local zdef = self._ZoneDefs.PickupZones[zone:GetName()]
@@ -4205,6 +4272,7 @@ function CTLD:CleanupCrates()
local obj = StaticObject.getByName(name)
if obj then obj:destroy() end
_cleanupCrateSmoke(name) -- Clean up smoke refresh schedule
+ _removeFromSpatialGrid(name, meta.point, 'crate') -- Remove from spatial index
CTLD._crates[name] = nil
if self.Config.Debug then env.info('[CTLD] Cleaned up crate '..name) end
-- Notify requester group if still around; else coalition
@@ -4563,6 +4631,8 @@ function CTLD:DropLoadedCrates(group, howMany)
local cname = string.format('CTLD_CRATE_%s_%d', k, math.random(100000,999999))
_spawnStaticCargo(self.Side, dropPt, (cat and cat.dcsCargoType) or 'uh1h_cargo', cname)
CTLD._crates[cname] = { key = k, side = self.Side, spawnTime = timer.getTime(), point = { x = dropPt.x, z = dropPt.z } }
+ -- Add to spatial index
+ _addToSpatialGrid(cname, CTLD._crates[cname], 'crate')
lc.byKey[k] = lc.byKey[k] - 1
if lc.byKey[k] <= 0 then lc.byKey[k] = nil end
lc.total = lc.total - 1
@@ -4725,11 +4795,15 @@ function CTLD:ScanHoverPickup()
end
CTLD._unitLast[uname] = { x = p3.x, z = p3.z, t = now, agl = agl }
- -- find nearest crate within search distance
- local bestName, bestMeta, bestd
- local bestType = 'crate' -- Track whether we found a crate or troops
+ -- Use spatial indexing to find nearby crates/troops efficiently
local maxd = coachCfg.autoPickupDistance or 25
- for name,meta in pairs(CTLD._crates) do
+ local nearby = _getNearbyFromSpatialGrid(p3.x, p3.z, maxd)
+
+ local bestName, bestMeta, bestd
+ local bestType = 'crate'
+
+ -- Search nearby crates from spatial grid
+ for name, meta in pairs(nearby.crates) do
if meta.side == self.Side then
local dx = (meta.point.x - p3.x)
local dz = (meta.point.z - p3.z)
@@ -4741,11 +4815,10 @@ function CTLD:ScanHoverPickup()
end
end
- -- Also scan for deployed troop groups to pick up
- for troopGroupName, troopMeta in pairs(CTLD._deployedTroops) do
+ -- Search nearby deployed troops from spatial grid
+ for troopGroupName, troopMeta in pairs(nearby.troops) do
if troopMeta.side == self.Side then
local troopGroup = GROUP:FindByName(troopGroupName)
- -- Only allow pickup if group exists and is alive
if troopGroup and troopGroup:IsAlive() then
local troopPos = troopGroup:GetCoordinate()
if troopPos then
@@ -4760,6 +4833,7 @@ function CTLD:ScanHoverPickup()
end
else
-- Group doesn't exist or is dead, remove from tracking
+ _removeFromSpatialGrid(troopGroupName, troopMeta.point, 'troops')
CTLD._deployedTroops[troopGroupName] = nil
end
end
@@ -4915,6 +4989,7 @@ function CTLD:ScanHoverPickup()
local obj = StaticObject.getByName(bestName)
if obj then obj:destroy() end
_cleanupCrateSmoke(bestName) -- Clean up smoke refresh schedule
+ _removeFromSpatialGrid(bestName, bestMeta.point, 'crate') -- Remove from spatial index
CTLD._crates[bestName] = nil
self:_addLoadedCrate(group, bestMeta.key)
if coachEnabled then
@@ -4928,6 +5003,7 @@ function CTLD:ScanHoverPickup()
if troopGroup then
troopGroup:Destroy()
end
+ _removeFromSpatialGrid(bestName, bestMeta.point, 'troops') -- Remove from spatial index
CTLD._deployedTroops[bestName] = nil
-- ADD to existing troops if any, don't overwrite
@@ -5320,6 +5396,8 @@ function CTLD:UnloadTroops(group, opts)
weightKg = load.weightKg or 0,
behavior = opts and opts.behavior or 'defend'
}
+ -- Add to spatial index for efficient hover pickup
+ _addToSpatialGrid(troopGroupName, CTLD._deployedTroops[troopGroupName], 'troops')
CTLD._troopsLoaded[gname] = nil
@@ -7038,7 +7116,7 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef)
-- Send initial deployment message
local gridStr = self:_GetMGRSString(position)
- local msg = _fmtMsg(CTLD.Messages.medevac_mash_deployed, {
+ local msg = _fmtTemplate(CTLD.Messages.medevac_mash_deployed, {
mash_id = CTLD._mobileMASHCounter[side],
grid = gridStr,
freq = cfg.MobileMASH.BeaconFrequency or '30.0 FM'
@@ -7060,7 +7138,7 @@ function CTLD:_CreateMobileMASH(group, position, catalogDef)
local currentPos = group:GetCoordinate()
if currentPos then
local currentGrid = ctldInstance:_GetMGRSString({x = currentPos.x, z = currentPos.z})
- local announceMsg = _fmtMsg(CTLD.Messages.medevac_mash_announcement, {
+ local announceMsg = _fmtTemplate(CTLD.Messages.medevac_mash_announcement, {
mash_id = CTLD._mobileMASHCounter[side],
grid = currentGrid,
freq = cfg.MobileMASH.BeaconFrequency or '30.0 FM'
@@ -7106,7 +7184,7 @@ function CTLD:_RemoveMobileMASH(mashId)
if mash.textId then trigger.action.removeMark(mash.textId) end
-- Send destruction message
- local msg = _fmtMsg(CTLD.Messages.medevac_mash_destroyed, {
+ local msg = _fmtTemplate(CTLD.Messages.medevac_mash_destroyed, {
mash_id = string.match(mashId, 'MOBILE_MASH_%d+_(%d+)') or '?'
})
trigger.action.outTextForCoalition(mash.side, msg, 20)
@@ -7214,6 +7292,79 @@ end
function CTLD:SetAllowedAircraft(list)
self.Config.AllowedAircraft = DeepCopy(list)
end
+
+-- Explicit cleanup handler for mission end
+-- Call this to properly shut down all CTLD schedulers and clear state
+function CTLD:Cleanup()
+ env.info('[Moose_CTLD] Cleanup initiated - stopping all schedulers and clearing state')
+
+ -- Stop all smoke refresh schedulers
+ if CTLD._smokeRefreshSchedules then
+ for crateId, schedule in pairs(CTLD._smokeRefreshSchedules) do
+ if schedule.funcId then
+ pcall(function() timer.removeFunction(schedule.funcId) end)
+ end
+ end
+ CTLD._smokeRefreshSchedules = {}
+ end
+
+ -- Stop all Mobile MASH schedulers
+ if CTLD._mashZones then
+ for mashId, mash in pairs(CTLD._mashZones) do
+ if mash.scheduler then
+ pcall(function() mash.scheduler:Stop() end)
+ end
+ if mash.eventHandler then
+ -- Event handlers clean themselves up, but we can nil the reference
+ mash.eventHandler = nil
+ end
+ end
+ end
+
+ -- Stop any MEDEVAC timeout checkers or other schedulers
+ -- (If you add schedulers in the future, stop them here)
+
+ -- Clear spatial grid
+ CTLD._spatialGrid = {}
+
+ -- Clear state tables (optional - helps with memory in long-running missions)
+ CTLD._crates = {}
+ CTLD._troopsLoaded = {}
+ CTLD._loadedCrates = {}
+ CTLD._deployedTroops = {}
+ CTLD._hoverState = {}
+ CTLD._unitLast = {}
+ CTLD._coachState = {}
+ CTLD._msgState = {}
+ CTLD._buildConfirm = {}
+ CTLD._buildCooldown = {}
+
+ env.info('[Moose_CTLD] Cleanup complete')
+end
+
+-- Register mission end event to auto-cleanup
+-- This ensures resources are properly released
+if not CTLD._cleanupHandlerRegistered then
+ CTLD._cleanupHandlerRegistered = true
+
+ local cleanupHandler = EVENTHANDLER:New()
+ cleanupHandler:HandleEvent(EVENTS.MissionEnd)
+
+ function cleanupHandler:OnEventMissionEnd(EventData)
+ env.info('[Moose_CTLD] Mission end detected - initiating cleanup')
+ -- Cleanup all instances
+ for _, instance in pairs(CTLD._instances or {}) do
+ if instance and instance.Cleanup then
+ pcall(function() instance:Cleanup() end)
+ end
+ end
+ -- Also call static cleanup
+ if CTLD.Cleanup then
+ pcall(function() CTLD:Cleanup() end)
+ end
+ end
+end
+
-- #endregion Public helpers
-- =========================
diff --git a/Moose_CTLD_Pure/Moose_CTLD_Pure.miz b/Moose_CTLD_Pure/Moose_CTLD_Pure.miz
index e9e12c1f585480003f689aae801b49bcff5e2ef9..dec105c4e0ba899c2101add72c077f49667fa0a8 100644
GIT binary patch
delta 88308
zcmYhhV|XCV*0vo@Y}>YN+nJaX+fF(Y+nLy$c!G&-+s4GU^UZzly`T5{(?|7>UR`z7
zwa!{q-NRv~+li*}w1DLAZlNV0BwvYP8~N6Md)MD_)>X}RZlBkxE$U3vh
p|8SU6+Vi%UHnam}E=1i}iR&+Yi}sK(ABKHnZm
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 |