-- Подключаемся к глобальной таблице
RadialVehicleSwitcher = RadialVehicleSwitcher or {}

-- === НОВАЯ ФУНКЦИЯ ДЛЯ УМНОГО ПУТИ СОХРАНЕНИЯ (MP SAFE) ===
function RadialVehicleSwitcher:getFavoritesPath()
    if g_currentMission.missionInfo and g_currentMission.missionInfo.savegameDirectory then
        -- Одиночная игра или хост сервера (сохраняем прямо в сейв)
        return g_currentMission.missionInfo.savegameDirectory .. "/radialFavorites.xml"
    else
        -- Клиент в мультиплеере (сохраняем локально у игрока)
        local settingsDir = getUserProfileAppPath() .. "modSettings/RadialVehicleSwitcher/"
        createFolder(settingsDir)
        
        -- Пытаемся привязать избранное к названию карты, чтобы не смешивать разные сервера
        local mapTitle = "mp_save"
        if g_currentMission.missionInfo and g_currentMission.missionInfo.mapTitle then
            mapTitle = string.gsub(g_currentMission.missionInfo.mapTitle, "[^%w]", "_")
        end
        return settingsDir .. "favorites_" .. mapTitle .. ".xml"
    end
end
-- ==========================================================

function RadialVehicleSwitcher:loadFavorites()
    local path = self:getFavoritesPath()
    if path and fileExists(path) then
        local xmlFile = loadXMLFile("favorites", path)
        if xmlFile ~= 0 then
            local i = 0
            while true do
                local key = string.format("favorites.vehicle(%d)", i)
                if not hasXMLProperty(xmlFile, key) then break end
                local vId = getXMLString(xmlFile, key .. "#id")
                if vId ~= nil and vId ~= "" then
                    self.favoritesMap[vId] = true
                end
                i = i + 1
            end
            delete(xmlFile)
        end
    end
end

function RadialVehicleSwitcher:saveFavorites()
    local path = self:getFavoritesPath()
    if path then
        local xmlFile = createXMLFile("favorites", path, "favorites")
        if xmlFile ~= 0 then
            local i = 0
            for vId, isFav in pairs(self.favoritesMap) do
                if isFav then
                    local key = string.format("favorites.vehicle(%d)", i)
                    setXMLString(xmlFile, key .. "#id", vId)
                    i = i + 1
                end
            end
            saveXMLFile(xmlFile)
            delete(xmlFile)
        end
    end
end

-- Перехватываем стандартное сохранение игры
FSBaseMission.saveSavegame = Utils.appendedFunction(FSBaseMission.saveSavegame, function(...)
    if RadialVehicleSwitcher ~= nil and RadialVehicleSwitcher.saveFavorites ~= nil then
        RadialVehicleSwitcher:saveFavorites()
    end
end)