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


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ToadClass = require(script.Parent.Toad)

local ToadManager = {}

-- playerToads[player] = { [1] = ToadInstance, [2] = ToadInstance, ... }
local playerToads = {}

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

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

    local template = ReplicatedStorage.ToadTemplates: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

-- Обновить всех жаб всех игроков — вызывается раз в Heartbeat из ToadController
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