mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-27 03:44:54 +00:00
60 lines
1.2 KiB
C#
60 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace HPJ.Simulation.Utilities
|
|
{
|
|
[System.Serializable]
|
|
public class Pool<T>
|
|
{
|
|
public List<T> Active;
|
|
public List<T> Inactive;
|
|
|
|
public Pool()
|
|
{
|
|
Active = new List<T>();
|
|
Inactive = new List<T>();
|
|
}
|
|
|
|
public T GetItem()
|
|
{
|
|
if (Inactive.Count > 0)
|
|
{
|
|
T Item = Inactive[0];
|
|
Inactive.RemoveAt(0);
|
|
return Item;
|
|
}
|
|
|
|
return default(T);
|
|
}
|
|
|
|
public void ReturnItem(T Item)
|
|
{
|
|
if (Active.Contains(Item))
|
|
{
|
|
Active.Remove(Item);
|
|
Inactive.Add(Item);
|
|
}
|
|
}
|
|
|
|
public void AddItem(T Item, bool AddToActiveList = true)
|
|
{
|
|
if (AddToActiveList)
|
|
{
|
|
Active.Add(Item);
|
|
}
|
|
else
|
|
{
|
|
Inactive.Add(Item);
|
|
}
|
|
}
|
|
|
|
public void ReturnAll()
|
|
{
|
|
for (int i = 0; i < Active.Count; i++)
|
|
{
|
|
Inactive.Add(Active[i]);
|
|
}
|
|
Active.Clear();
|
|
}
|
|
}
|
|
}
|