Files
ThordekkCore/fix_gametime_includes.sh
T
2026-01-20 21:33:16 -03:00

133 lines
5.5 KiB
Bash

#!/bin/bash
# Fix missing GameTime.h includes for Phase 7A
# Fixes 540 C3861 errors: "GetGameTimeMS": Identifier not found
set -e
echo "=== Phase 7A: Adding GameTime.h includes ==="
echo ""
# List of files from error log that need GameTime.h include
FILES=(
"src/modules/Playerbot/AI/BehaviorTree/Nodes/CombatNodes.h"
"src/modules/Playerbot/AI/BehaviorTree/Nodes/HealingNodes.h"
"src/modules/Playerbot/AI/ClassAI/ActionPriority.h"
"src/modules/Playerbot/AI/ClassAI/BaselineRotationManager.cpp"
"src/modules/Playerbot/AI/ClassAI/ClassAI.h"
"src/modules/Playerbot/AI/ClassAI/Common/StatusEffectTracker.h"
"src/modules/Playerbot/AI/ClassAI/DeathKnights/DiseaseManager.cpp"
"src/modules/Playerbot/AI/ClassAI/DeathKnights/DiseaseManager.h"
"src/modules/Playerbot/AI/ClassAI/DemonHunters/DemonHunterAI.cpp"
"src/modules/Playerbot/AI/ClassAI/Druids/BalanceDruidRefactored.h"
"src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.cpp"
"src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.h"
"src/modules/Playerbot/AI/ClassAI/Hunters/BeastMasteryHunterRefactored.h"
"src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.h"
"src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.cpp"
"src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.cpp"
"src/modules/Playerbot/AI/ClassAI/ResourceManager.cpp"
"src/modules/Playerbot/AI/ClassAI/ResourceManager.h"
"src/modules/Playerbot/AI/ClassAI/ResourceTypes.h"
"src/modules/Playerbot/AI/ClassAI/Shamans/ShamanAI.cpp"
"src/modules/Playerbot/AI/Combat/CrowdControlManager.h"
"src/modules/Playerbot/AI/Combat/DefensiveManager.h"
"src/modules/Playerbot/AI/Combat/GroupCombatTrigger.cpp"
"src/modules/Playerbot/AI/Combat/InterruptCoordinator.cpp"
"src/modules/Playerbot/AI/Combat/MechanicAwareness.cpp"
"src/modules/Playerbot/AI/Combat/MovementIntegration.h"
"src/modules/Playerbot/AI/Coordination/RaidOrchestrator.cpp"
"src/modules/Playerbot/AI/Coordination/RoleCoordinator.cpp"
"src/modules/Playerbot/AI/Strategy/GroupCombatStrategy.cpp"
"src/modules/Playerbot/AI/Strategy/LootStrategy.cpp"
"src/modules/Playerbot/AI/Strategy/QuestStrategy.cpp"
"src/modules/Playerbot/AI/Strategy/RestStrategy.cpp"
"src/modules/Playerbot/Advanced/AdvancedBehaviorManager.cpp"
"src/modules/Playerbot/Advanced/SocialManager.cpp"
"src/modules/Playerbot/Character/BotCharacterDistribution.cpp"
"src/modules/Playerbot/Chat/BotChatCommandHandler.cpp"
"src/modules/Playerbot/Game/InventoryManager.cpp"
"src/modules/Playerbot/Game/NPCInteractionManager.cpp"
"src/modules/Playerbot/Game/QuestAcceptanceManager.cpp"
"src/modules/Playerbot/Group/RoleAssignment.h"
"src/modules/Playerbot/Movement/Arbiter/MovementArbiter.cpp"
"src/modules/Playerbot/Movement/Arbiter/MovementRequest.cpp"
"src/modules/Playerbot/Movement/LeaderFollowBehavior.cpp"
"src/modules/Playerbot/Movement/QuestPathfinder.cpp"
"src/modules/Playerbot/Professions/ProfessionAuctionBridge.cpp"
"src/modules/Playerbot/Professions/ProfessionManager.cpp"
"src/modules/Playerbot/Quest/DynamicQuestSystem.cpp"
"src/modules/Playerbot/Quest/DynamicQuestSystem.h"
"src/modules/Playerbot/Quest/ObjectiveTracker.cpp"
"src/modules/Playerbot/Quest/ObjectiveTracker.h"
"src/modules/Playerbot/Quest/QuestCompletion.h"
"src/modules/Playerbot/Quest/QuestPickup.cpp"
"src/modules/Playerbot/Quest/QuestPickup.h"
"src/modules/Playerbot/Quest/UnifiedQuestManager.cpp"
"src/modules/Playerbot/Session/BotPacketRelay.cpp"
"src/modules/Playerbot/Session/BotPacketSimulator.cpp"
"src/modules/Playerbot/Session/BotPriorityManager.cpp"
"src/modules/Playerbot/Session/BotWorldSessionMgr.cpp"
"src/modules/Playerbot/Social/AuctionHouse.h"
"src/modules/Playerbot/Social/GuildIntegration.cpp"
"src/modules/Playerbot/Social/GuildIntegration.h"
"src/modules/Playerbot/Social/LootAnalysis.h"
"src/modules/Playerbot/Social/LootCoordination.h"
"src/modules/Playerbot/Social/LootDistribution.cpp"
"src/modules/Playerbot/Social/LootDistribution.h"
"src/modules/Playerbot/Social/MarketAnalysis.cpp"
"src/modules/Playerbot/Social/MarketAnalysis.h"
"src/modules/Playerbot/Social/UnifiedLootManager.cpp"
"src/modules/Playerbot/Social/UnifiedLootManager.h"
)
FIXED=0
SKIPPED=0
for file in "${FILES[@]}"; do
# Convert Windows path to Unix path if needed
file=$(echo "$file" | sed 's|C:\\TrinityBots\\TrinityCore\\||' | sed 's|\\|/|g')
if [ ! -f "$file" ]; then
echo "SKIP: File not found: $file"
((SKIPPED++))
continue
fi
# Check if file already has GameTime.h include
if grep -q '#include.*GameTime\.h' "$file"; then
echo "SKIP: $file (already has GameTime.h)"
((SKIPPED++))
continue
fi
# Check if file actually uses GameTime::GetGameTimeMS
if ! grep -q 'GameTime::GetGameTimeMS' "$file"; then
echo "SKIP: $file (doesn't use GameTime::GetGameTimeMS)"
((SKIPPED++))
continue
fi
# Add GameTime.h include after the last #include line
# Use a temporary file to avoid issues with in-place editing
awk '/^#include/ {last_include=NR} END {print last_include}' "$file" > /tmp/last_include_line
LAST_INCLUDE=$(cat /tmp/last_include_line)
if [ -n "$LAST_INCLUDE" ] && [ "$LAST_INCLUDE" -gt 0 ]; then
# Insert #include "GameTime.h" after the last include
sed -i "${LAST_INCLUDE}a\\#include \"GameTime.h\"" "$file"
echo "FIXED: $file (added GameTime.h after line $LAST_INCLUDE)"
((FIXED++))
else
echo "SKIP: $file (no #include lines found)"
((SKIPPED++))
fi
done
echo ""
echo "=== Summary ==="
echo "Files fixed: $FIXED"
echo "Files skipped: $SKIPPED"
echo "Total files processed: ${#FILES[@]}"
echo ""
echo "Expected error reduction: ~540 errors (C3861: GetGameTimeMS)"