--[[
Autor NazzaB82 (creato con Chatgpt)
date written: 2024/12/21
]]

print("====Tiger6S Cotton Edition====")

MultiFruitAI = {}

-- ============================================================
-- Helper: aggiunge i requisiti AI per uno specifico fruitType
-- ============================================================
local function addAIRequirements(self, desc, spec)
    -- Caso: veicolo con logica AI avanzata
    if self.setAIFruitRequirements ~= nil then
        
        -- Se presenti stati "preparing"
        if desc.minPreparingGrowthState ~= -1 then
            
            -- Stato di preparazione standard
            self:addAIFruitRequirement(desc.index, desc.minPreparingGrowthState, desc.maxPreparingGrowthState)

            -- Usa lo stato preparato addizionale se abilitato
            local aiUsePreparedState = self.xmlFile:getValue(
                "vehicle.fruitPreparer#aiUsePreparedState",
                self.spec_cutter ~= nil
            )
            if aiUsePreparedState then
                self:addAIFruitRequirement(desc.index, desc.preparedGrowthState, desc.preparedGrowthState)
            end

        else
            -- Nessun preparing: si usa harvesting o forage
            local minState = spec.allowsForageGrowthState
                and desc.minForageGrowthState
                or desc.minHarvestingGrowthState

            self:addAIFruitRequirement(desc.index, minState, desc.maxHarvestingGrowthState)
        end

    else
        -- Veicolo con AI semplificata
        self:addAIFruitRequirement(desc.index, desc.minPreparingGrowthState, desc.maxPreparingGrowthState)
    end
end


-- ============================================================================
-- Funzione principale: estende FruitPreparer.onLoad per supporto multifruit
-- ============================================================================
function MultiFruitAI.fix(self, savegame)
    local spec = self.spec_fruitPreparer
    spec.fruitTypes = {}

    -- Leggi fruitTypes (lista o singolo valore)
    local fruitTypes = self.xmlFile:getValue("vehicle.fruitPreparer#fruitTypes", {}, true)
    local singleType = self.xmlFile:getValue("vehicle.fruitPreparer#fruitType")

    if singleType ~= nil then
        table.insert(fruitTypes, singleType)
    end

    -- Nessun fruitType trovato → warning
    if #fruitTypes == 0 then
        Logging.xmlWarning(self.xmlFile, "Missing fruitType in fruitPreparer")
        return
    end

    -- Processa ogni fruitType
    for _, fruitTypeName in ipairs(fruitTypes) do
        local desc = g_fruitTypeManager:getFruitTypeByName(fruitTypeName)

        if desc == nil then
            Logging.xmlWarning(self.xmlFile, "Unable to find fruitType '%s' in fruitPreparer", fruitTypeName)
        else
            -- Registra il fruitType nell'attrezzo
            table.insert(spec.fruitTypes, desc.index)

            -- Fix automatico preparedGrowthState mancante
            if desc.preparedGrowthState == -1 then
                desc.preparedGrowthState = 15
            end

            -- Aggiungi i requisiti AI
            addAIRequirements(self, desc, spec)
        end
    end
end


-- Hook della funzione originale
FruitPreparer.onLoad = Utils.appendedFunction(FruitPreparer.onLoad, MultiFruitAI.fix)

