-- AggressionDebugger - App ultra-simple pour traquer les valeurs d'aggression
-- Lit et log les valeurs d'aggression de toutes les voitures à chaque frame

local Timer = 0
local Updates = 0
local LogInterval = 1.0  -- Log toutes les secondes
local LastLogTime = 0

-- Cache des dernières valeurs pour détecter les changements
local LastAggressionValues = {}

function script.update(dt)
    Timer = Timer + dt
    Updates = Updates + 1
    
    -- Log périodique (toutes les secondes)
    if Timer >= LastLogTime + LogInterval then
        local sim = ac.getSim()
        ac.log("=== AGGRESSION DEBUG Frame #" .. Updates .. " Timer=" .. string.format("%.1f", Timer) .. " ===")
        
        -- Lire toutes les voitures
        for carIndex = 0, sim.carsCount - 1 do
            local car = ac.getCar(carIndex)
            if car then
                local currentAggression = car.aiAggression
                local carID = ac.getCarID(carIndex)
                local speedKmh = car.speedKmh
                
                -- Détecter les changements
                local lastValue = LastAggressionValues[carIndex]
                local changed = (lastValue and math.abs(currentAggression - lastValue) > 0.001)
                local changeIndicator = changed and " [CHANGED]" or ""
                
                ac.log("Car #" .. carIndex .. " (" .. (carID or "unknown") .. "): aggression=" .. string.format("%.4f", currentAggression) .. " speed=" .. string.format("%.1f", speedKmh) .. changeIndicator)
                
                -- Sauvegarder pour comparaison future
                LastAggressionValues[carIndex] = currentAggression
            else
                ac.log("Car #" .. carIndex .. ": car object is nil")
            end
        end
        
        ac.log("=== END AGGRESSION DEBUG ===")
        LastLogTime = Timer
    end
    
    -- Detection de changements en temps réel (toutes les frames)
    local sim = ac.getSim()
    for carIndex = 0, sim.carsCount - 1 do
        local car = ac.getCar(carIndex)
        if car then
            local currentAggression = car.aiAggression
            local lastValue = LastAggressionValues[carIndex]
            
            -- Log immédiat si changement détecté
            if lastValue and math.abs(currentAggression - lastValue) > 0.001 then
                local carID = ac.getCarID(carIndex)
                ac.log("REALTIME CHANGE: Car #" .. carIndex .. " (" .. (carID or "unknown") .. ") aggression: " .. string.format("%.4f", lastValue) .. " → " .. string.format("%.4f", currentAggression) .. " (frame #" .. Updates .. ")")
                LastAggressionValues[carIndex] = currentAggression
            end
        end
    end
end

function script.windowMain()
    ui.text("Aggression Debugger")
    ui.text("Frame: " .. Updates)
    ui.text("Timer: " .. string.format("%.1f", Timer))
    ui.separator()
    
    -- Afficher les valeurs actuelles en temps réel
    local sim = ac.getSim()
    for carIndex = 0, sim.carsCount - 1 do
        local car = ac.getCar(carIndex)
        if car then
            local carID = ac.getCarID(carIndex)
            ui.text("Car #" .. carIndex .. " (" .. (carID or "unknown") .. "): " .. string.format("%.4f", car.aiAggression))
        end
    end
end