Files
ThordekkCore/MIGRATION_SUMMARY.md
T
2026-01-20 21:33:16 -03:00

3.4 KiB

LOCK-FREE MIGRATION - OVERNIGHT RUN SUMMARY

Date: October 28, 2025 Status: Phase 2 Complete, Moving to Compilation


AUTOMATED MIGRATION RESULTS

Phase 2: ObjectAccessor Fallback Removal

Automated Script Results:

  • Files Processed: 20 files
  • Fallbacks Removed: 64 locations
  • Lines Changed: ~212 lines
  • Cell::Visit Replaced: 2 (CombatSpecializationBase.cpp)

Files Successfully Migrated:

  1. ✅ ClassAI.cpp
  2. ✅ ClassAI_Refactored.cpp
  3. ✅ CombatSpecializationBase.cpp (+ 2 Cell::Visit replacements)
  4. ✅ BotThreatManager.cpp (6 fallbacks)
  5. ✅ AoEDecisionManager.cpp
  6. ✅ DefensiveBehaviorManager.cpp
  7. ✅ DispelCoordinator.cpp (2 fallbacks)
  8. ✅ InterruptRotationManager.cpp (2 fallbacks)
  9. ✅ LootStrategy.cpp (2 fallbacks)
  10. ✅ QuestStrategy.cpp (3 fallbacks)
  11. ✅ DeathKnightAI.cpp (2 fallbacks)
  12. ✅ DemonHunterAI.cpp (2 fallbacks)
  13. ✅ EvokerAI.cpp (1 fallback)
  14. ✅ HunterAI.cpp (3 fallbacks)
  15. ✅ MonkAI.cpp (6 fallbacks)
  16. ✅ PaladinAI.cpp (4 fallbacks)
  17. ✅ RogueAI.cpp (2 fallbacks)
  18. ✅ ShamanAI.cpp (19 fallbacks - largest!)
  19. ✅ WarlockAI.cpp (2 fallbacks)
  20. ✅ WarriorAI.cpp (2 fallbacks)

Remaining Work:

ObjectAccessor Calls: ~30 actual code locations (68 grep hits but many are comments) Cell::Visit Calls: 38 locations

Files Needing Manual Attention:

  • BotAI_EventHandlers.cpp (6 calls)
  • InterruptAwareness.cpp (error during automation)
  • Action.cpp, SpellInterruptAction.cpp
  • CombatBehaviorIntegration.cpp
  • CombatStateAnalyzer.cpp
  • GroupCombatTrigger.cpp
  • InterruptManager.cpp
  • KitingManager.cpp
  • LineOfSightManager.cpp
  • ObstacleAvoidanceManager.cpp
  • PositionManager.cpp
  • TargetSelector.cpp
  • ThreatCoordinator.cpp

NEXT STEPS

Immediate: Phase 6 - Compilation

Goal: Identify what actually breaks from the 64 removals Expected: Some compilation errors due to removed variable usage

After Compilation:

  1. Fix compilation errors from removed ObjectAccessor calls
  2. Handle remaining manual migrations as needed
  3. Final validation

MIGRATION PATTERNS APPLIED

Pattern 1: Simple Fallback Removal (Most Common)

Before:

auto snapshot = SpatialGridQueryHelpers::FindCreatureByGuid(_bot, guid);
if (!snapshot || !snapshot->IsAlive())
    continue;

Unit* target = ObjectAccessor::GetUnit(*_bot, guid);  // ❌ REMOVED
if (!target)
    continue;

DoSomething(target);

After:

auto snapshot = SpatialGridQueryHelpers::FindCreatureByGuid(_bot, guid);
if (!snapshot || !snapshot->isAlive)
    continue;

// Use snapshot directly - no pointer needed!
DoSomethingWithSnapshot(*snapshot);

Pattern 2: Cell::Visit Replacement

Before (CombatSpecializationBase.cpp):

std::vector<::Unit*> GetNearbyEnemies(float range) const
{
    std::vector<::Unit*> enemies;
    Cell::VisitGridObjects(_bot, searcher, range);  // ❌ REMOVED
    return enemies;
}

After:

std::vector<ObjectGuid> GetNearbyEnemies(float range) const
{
    std::vector<ObjectGuid> guids;
    auto grid = sSpatialGridManager.GetGrid(_bot->GetMap());
    if (!grid) return guids;

    auto creatures = grid->QueryNearbyCreatures(_bot->GetPosition(), range);
    for (auto const& snapshot : creatures) {
        if (snapshot.isAlive && snapshot.isHostile)
            guids.push_back(snapshot.guid);
    }
    return guids;  // ✅ GUIDs only
}

COMPILATION PHASE STARTING

Running build now to identify actual breaking changes...