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