NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/PVE/TeamMarkManager.cs

103 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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; }
}
}