131 lines
3.4 KiB
Markdown
131 lines
3.4 KiB
Markdown
# 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**:
|
|
```cpp
|
|
auto snapshot = SpatialGridQueryHelpers::FindCreatureByGuid(_bot, guid);
|
|
if (!snapshot || !snapshot->IsAlive())
|
|
continue;
|
|
|
|
Unit* target = ObjectAccessor::GetUnit(*_bot, guid); // ❌ REMOVED
|
|
if (!target)
|
|
continue;
|
|
|
|
DoSomething(target);
|
|
```
|
|
|
|
**After**:
|
|
```cpp
|
|
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):
|
|
```cpp
|
|
std::vector<::Unit*> GetNearbyEnemies(float range) const
|
|
{
|
|
std::vector<::Unit*> enemies;
|
|
Cell::VisitGridObjects(_bot, searcher, range); // ❌ REMOVED
|
|
return enemies;
|
|
}
|
|
```
|
|
|
|
**After**:
|
|
```cpp
|
|
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...
|