103 lines
2.5 KiB
C#
103 lines
2.5 KiB
C#
using Framework;
|
||
using PhxhSDK;
|
||
using System.Collections.Generic;
|
||
|
||
public class TeamMarkManager : Singlenton<TeamMarkManager>, IInitable
|
||
{
|
||
public class TeamMark
|
||
{
|
||
public int ID;
|
||
public int ItemID;
|
||
public string nameKey;
|
||
public string iconKey;
|
||
public string imgPathKey;
|
||
public string sourcePathKey;
|
||
}
|
||
|
||
private List<TeamMark> allMarks = new List<TeamMark>();
|
||
private List<TeamMark> ShowMarks = new();
|
||
private int unlockMarksCnt = 0;
|
||
private int selectedMarkIndex = -1;
|
||
|
||
private bool initialized = false;
|
||
|
||
void initList()
|
||
{
|
||
if(initialized)
|
||
{
|
||
return;
|
||
}
|
||
var TeamMarkCfg = TableManager.Instance.Tables.TeamMark;
|
||
allMarks.Clear();
|
||
foreach (var item in TeamMarkCfg.DataList)
|
||
{
|
||
TeamMark mark = new TeamMark();
|
||
mark.ID = item.ID;
|
||
mark.ItemID = item.ItemID;
|
||
mark.nameKey = item.NameLocal;
|
||
mark.iconKey = item.PreviewIconPath;
|
||
mark.imgPathKey = item.BGIconPath;
|
||
mark.sourcePathKey = item.AchieveRequirement;
|
||
allMarks.Add(mark);
|
||
}
|
||
SetUnlockMarks();
|
||
initialized = true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 调整ShowMarks的顺序,已解锁的放在前面
|
||
/// </summary>
|
||
void SetUnlockMarks()
|
||
{
|
||
ShowMarks.Clear();
|
||
unlockMarksCnt = 0;
|
||
for (int i = 0; i < allMarks.Count; i++)
|
||
{
|
||
if (CategoryManager.Instance.GetItemCount(allMarks[i].ItemID) > 0)//已解锁
|
||
{
|
||
ShowMarks.Insert(unlockMarksCnt++, allMarks[i]);//已解锁的放在前面
|
||
}
|
||
else
|
||
{
|
||
ShowMarks.Add(allMarks[i]);//未解锁的放在后面
|
||
}
|
||
}
|
||
}
|
||
|
||
public void Init()
|
||
{
|
||
EventManager.Instance.Register(EventManager.EventName.ItemChange, SetUnlockMarks);
|
||
}
|
||
|
||
public void Release()
|
||
{
|
||
EventManager.Instance.Unregister(EventManager.EventName.ItemChange, SetUnlockMarks);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 由TeamMarkChoose调起
|
||
/// </summary>
|
||
public List<TeamMark> ShownList
|
||
{
|
||
get
|
||
{
|
||
if (!initialized)
|
||
{
|
||
initList();
|
||
}
|
||
return ShowMarks;
|
||
}
|
||
}
|
||
|
||
public int UnlockMarksCnt
|
||
{
|
||
get { return unlockMarksCnt; }
|
||
}
|
||
|
||
public int SelectedMarkIndex
|
||
{
|
||
get { return selectedMarkIndex; }
|
||
set { selectedMarkIndex = value; }
|
||
}
|
||
}
|