Загрузка данных


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ToadClass = require(script.Parent.Toad)

local ToadManager = {}

local playerToads = {}

function ToadManager.GetToads(player)
    return playerToads[player] or {}
end

function ToadManager.GiveToad(player, templateName)
    local character = player.Character
    if not character or not character.PrimaryPart then
        warn("Нельзя выдать жабу — персонаж не готов:", player.Name)
        return nil
    end

    local templatesFolder = ReplicatedStorage:FindFirstChild("ToadTemplates")
    if not templatesFolder then
        warn("Нет папки ReplicatedStorage.ToadTemplates")
        return nil
    end

    local template = templatesFolder:FindFirstChild(templateName)
    if not template then
        warn("Не найден шаблон жабы:", templateName)
        return nil
    end

    local model = template:Clone()
    model.Parent = workspace

    local spawnPos = character.PrimaryPart.Position + Vector3.new(math.random(-3,3), 0, math.random(-3,3))
    model:PivotTo(CFrame.new(spawnPos))

    if not playerToads[player] then
        playerToads[player] = {}
    end

    local slotIndex = #playerToads[player] + 1
    local toad = ToadClass.new(model, character, slotIndex)
    table.insert(playerToads[player], toad)

    return toad
end

function ToadManager.ClearToads(player)
    local list = playerToads[player]
    if not list then return end

    for _, toad in ipairs(list) do
        toad:Destroy()
    end
    playerToads[player] = nil
end

function ToadManager.UpdateAll()
    for player, list in pairs(playerToads) do
        for i = #list, 1, -1 do
            local toad = list[i]
            if not toad.model or not toad.model.Parent then
                table.remove(list, i)
            else
                toad:Update()
            end
        end
    end
end

return ToadManager