Optional ClassicAPI support

When ClassicAPI is installed and "Use ClassicAPI" is on (Mods tab, reload):
- Detect ClassicAPI and each feature separately; show it in the Mods tab
- Read auras with C_UnitAuras.GetAuraSlots (fill form) + UnitAuraBySlot,
  reusing entries, with ClassicAPI durations, expirations and casters
- UNIT_AURA_DELTA: refresh-only events update stacks and timers in place
  without rebuilding the aura icons or the health bar
- Aura timers without SuperWoW; native Cooldown frames with one shared
  text driver instead of a Model and OnUpdateModel per icon
- UNIT_IN_RANGE_UPDATE, UNIT_DISTANCE_CHECK_UPDATE, UNIT_CONNECTION and
  INCOMING_RESURRECT_CHANGED; UnitHasIncomingResurrection in res checks
- HealPredict learns heals from COMBAT_LOG_EVENT_UNFILTERED when the
  GUID formats match SuperWoW's
- Distance and line of sight when UnitXP SP3 and SuperWoW are missing

Without ClassicAPI, or with the option off, behaviour is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwwTK1hwTEWHqsan2mV
This commit is contained in:
2026-11-02 19:36:30 +00:00
co-authored by Claude Opus 5.5
parent f7ba1c934f
commit 0f803aca4d
11 changed files with 779 additions and 93 deletions
+9
View File
@@ -139,5 +139,14 @@ end
function StartUnitTracker()
LoadTrackingOptions()
-- Providers can change once options are loaded (ClassicAPI distance and sight)
if not preciseDistance and util.CanClientGetPreciseDistance() then
preciseDistance = true
nextRangeUpdate = GetTime() + 0.6
end
if not sightTrackingEnabled and util.CanClientSightCheck() then
sightTrackingEnabled = true
nextSightUpdate = GetTime() + 0.6
end
UnitTrackerFrame:SetScript("OnUpdate", RunTrackingScan)
end