90 lines
2.0 KiB
C#
90 lines
2.0 KiB
C#
|
|
using System.Collections;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
namespace MMO
|
|||
|
|
{
|
|||
|
|
public abstract class MMOListView<T> : IMMOListView where T : MMOListCell
|
|||
|
|
{
|
|||
|
|
public abstract int Count
|
|||
|
|
{
|
|||
|
|
get;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[SerializeField] GameObject mTplCell;
|
|||
|
|
[SerializeField] Transform mCtnCells;
|
|||
|
|
|
|||
|
|
protected List<T> mCellList;
|
|||
|
|
|
|||
|
|
public override void Show(bool pShow)
|
|||
|
|
{
|
|||
|
|
gameObject.SetActive(pShow);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void LoadData()
|
|||
|
|
{
|
|||
|
|
BeforeLoad();
|
|||
|
|
|
|||
|
|
if (mCellList == null)
|
|||
|
|
{
|
|||
|
|
mCellList = new List<T>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (int i = 0; i < Count; i++)
|
|||
|
|
{
|
|||
|
|
T tCell = null;
|
|||
|
|
if (i < mCellList.Count)
|
|||
|
|
{
|
|||
|
|
tCell = mCellList[i];
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
tCell = SpawnCell();
|
|||
|
|
mCellList.Add(tCell);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tCell.gameObject.SetActive(true);
|
|||
|
|
tCell.SetIndex(i);
|
|||
|
|
ConfigCell(tCell);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
HideUnused();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ClearSelection()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected virtual void BeforeLoad()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected abstract void ConfigCell(T pCell);
|
|||
|
|
|
|||
|
|
private T SpawnCell()
|
|||
|
|
{
|
|||
|
|
GameObject tCellOb = Instantiate(mTplCell, mCtnCells);
|
|||
|
|
|
|||
|
|
tCellOb.transform.localScale = Vector3.one;
|
|||
|
|
|
|||
|
|
return tCellOb.GetComponent<T>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void HideUnused()
|
|||
|
|
{
|
|||
|
|
for (int i = Count; i < mCellList.Count; i++)
|
|||
|
|
{
|
|||
|
|
mCellList[i].gameObject.SetActive(false);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public abstract class IMMOListView : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
public abstract void Show(bool pShow);
|
|||
|
|
public abstract void LoadData();
|
|||
|
|
public abstract void ClearSelection();
|
|||
|
|
}
|
|||
|
|
}
|