using UnityEngine;
using UnityEngine.Events;

/// <summary>
/// 带标签的物体池
/// </summary>
public class UiItemPool<TItem, TLoadData, TLoadTask> : AutoLoadPool<TItem, TLoadData, TLoadTask> where TItem : Component where TLoadData : BaseLoadData<TItem, TLoadData> where TLoadTask : BaseLoadTask<TItem, TLoadData, TLoadTask>, new()
{
    public UiItemPool(Transform root) : base(root, true, null)
    {
    }

    public void PullItem(TLoadData taskStarter, UIPathData pathData)
    {
        PullItem(taskStarter, pathData.path, pathData.name);
    }

    /// <summary>
    /// 将物品退回到物品池中
    /// </summary>
    /// <param name="bundleName">资源包名称</param>
    /// <param name="prefabName">物体名称</param>
    /// <param name="item">物体</param>
    public void PushItem(UIPathData pathData, TItem item)
    {
        PushItem(pathData.path, pathData.name, item);
    }
}