-- MOTORREZGES SCRIPT - Ágicának (TUNINGOLT "GLA-GLA" VERZIÓ)
-- Alapjáraton lassú, komótos bólogatás -> Gázadásra felpörgő remegés

Motorrezges = {}

function Motorrezges.prerequisitesPresent(specializations)
    return true
end

function Motorrezges.registerEventListeners(vehicleType)
    SpecializationUtil.registerEventListener(vehicleType, "onLoad", Motorrezges)
    SpecializationUtil.registerEventListener(vehicleType, "onUpdate", Motorrezges)
end

function Motorrezges:onLoad(savegame)
    print("### MOTORREZGES: Script indítása... ###")

    -- KIPUFOGÓ INDEXE (89 ezt kacsacsör nélkül kell irni !!! mert ez az egyébként -> 0>89)
    local nodePath = "27|51"  
    
    self.exhaustNode = I3DUtil.indexToObject(self.components[1].node, nodePath, self.i3dMappings)

    if self.exhaustNode ~= nil then
        print("### MOTORREZGES: SIKER! A kipufogó megvan: " .. nodePath)
    else
        print("### MOTORREZGES: HIBA! Nem találom ezt az indexet: " .. nodePath)
    end

    self.rezgesTimer = 0
end

function Motorrezges:onUpdate(dt)
    if self.exhaustNode == nil or self.spec_motorized == nil then 
        return 
    end

    local motor = self.spec_motorized.motor
    
    if self.spec_motorized.isMotorStarted then
        
        self.rezgesTimer = self.rezgesTimer + dt
        
        -- === OKOS FORDULATSZÁM SZÁMÍTÁS ===
        local rpmFactor = 0
        
        if motor ~= nil and motor.getRealRpm ~= nil then
            local currentRpm = motor:getRealRpm()
            
            -- Itt a trükk: Nem 0-tól, hanem 700-tól (alapjárat alól) számolunk
            local minRpm = 700
            local maxRpm = 2200
            
            -- Kiszámoljuk, hol tartunk a kettő között (0 és 1 között lesz az eredmény)
            if currentRpm < minRpm then
                rpmFactor = 0 -- Ha indítózik, még ne pörögjön
            else
                rpmFactor = (currentRpm - minRpm) / (maxRpm - minRpm)
            end
            
            if rpmFactor > 1 then rpmFactor = 1 end
        else
            rpmFactor = 0.1 
        end

        -- === SEBESSÉG (FREKVENCIA) BEÁLLÍTÁS ===
        -- 0.012: Ez nagyon lassú! Ez adja a "gla-gla-gla" hatást alapjáraton.
        -- + (rpmFactor * 0.35): Gázadásra viszont brutálisan felgyorsul a remegés.
        local speed = 0.012 + (rpmFactor * 0.35)
        
        -- === KITÉRÉS MÉRTÉKE (ERŐSSÉG) ===
        -- 1.2 fok alapjáraton (hogy látszódjon a lassú mozgás)
        -- Gázadásra felmegy egészen 2.5 fokig (hogy érezd az erőt)
        local vibrationAngle = 1.2 + (rpmFactor * 1.3)
        
        -- Matek (Szinusz hullám)
        local deg = math.abs(math.sin(self.rezgesTimer * speed)) * vibrationAngle
        local rad = math.rad(deg)

        -- Forgatás a Z tengelyen
        setRotation(self.exhaustNode, 0, 0, rad)
        
    else
        setRotation(self.exhaustNode, 0, 0, 0)
    end
end