Files
test/Assets/PerfectWorld/Scripts/ModelFiles/CECTaoistRank.cs
2026-02-28 18:34:39 +07:00

168 lines
4.8 KiB
C#

using UnityEngine;
namespace BrewMonster
{
public class CECTaoistRank
{
private int m_id; // ID / Rank ID
private string m_name; // ID / Rank name
private CECTaoistRank m_next;
static bool initComplete = false;
public static CECTaoistRank[] s_allTaoistRanks = new CECTaoistRank[(int)ToaistRank.TotalRankCount];
public static readonly int[] TaoistRankIDs = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 20, 21, 22, 30, 31, 32 };
#if UNITY_EDITOR
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void OnPlay()
{
BMLogger.Log("CECTaoistRank OnPlay Reset");
initComplete = false;
CECTaoistRank[] s_allTaoistRanks = new CECTaoistRank[(int)ToaistRank.TotalRankCount];
}
#endif
public int GetID()
{
return m_id;
}
public string GetName()
{
return string.IsNullOrEmpty(m_name) ? $"Rank {m_id}" : m_name;
}
public bool IsGodRank()
{
CECTaoistRank GodRank;
for (GodRank = GetGodRankBegin(); GodRank != GetGodRankEnd();
GodRank = GodRank.GetNext())
{
if (this == GodRank)
{
return true;
}
}
return false;
}
public static CECTaoistRank GetBaseRankBegin()
{
init();
return s_allTaoistRanks[0];
}
public static CECTaoistRank GetBaseRankEnd()
{
init();
return s_allTaoistRanks[(int)ToaistRank.BaseRankCount - 1].m_next;
}
public static CECTaoistRank GetGodRankBegin()
{
init();
return s_allTaoistRanks[(int)ToaistRank.BaseRankCount];
}
public static CECTaoistRank GetGodRankEnd()
{
init();
return GetLastGodRank().m_next;
}
public static CECTaoistRank GetLastGodRank()
{
init();
return s_allTaoistRanks[(int)ToaistRank.BaseRankCount + (int)ToaistRank.GodRankCount - 1];
}
public bool IsBaseRank()
{
return !IsGodRank() && !IsEvilRank();
}
public bool IsEvilRank()
{
CECTaoistRank EvilRank;
for (EvilRank = GetEvilRankBegin(); EvilRank != GetEvilRankEnd();
EvilRank = EvilRank.GetNext())
{
if (this == EvilRank)
{
return true;
}
}
return false;
}
public CECTaoistRank GetNext()
{
return m_next;
}
public static CECTaoistRank GetEvilRankBegin()
{
init();
return s_allTaoistRanks[(int)ToaistRank.BaseRankCount + (int)ToaistRank.GodRankCount];
}
public static CECTaoistRank GetEvilRankEnd()
{
init();
return GetLastEvilRank().m_next;
}
public static CECTaoistRank GetLastEvilRank()
{
init();
return s_allTaoistRanks[(int)ToaistRank.TotalRankCount - 1];
}
public static CECTaoistRank GetTaoistRank(int id)
{
init();
for (int i = 0; i < (int)ToaistRank.TotalRankCount; i++)
{
if (TaoistRankIDs[i] == id)
{
return s_allTaoistRanks[i];
}
}
return null;
}
public static void init()
{
if (initComplete)
{
return;
}
for (int i = (int)ToaistRank.TotalRankCount - 1; i >= 0; i--)
{
if (s_allTaoistRanks[i] == null)
{
s_allTaoistRanks[i] = new CECTaoistRank();
}
s_allTaoistRanks[i].m_id = TaoistRankIDs[i];
s_allTaoistRanks[i].m_name = CECUIManager.Instance.GetInGameUIMan().GetStringFromTable(1001 + s_allTaoistRanks[i].m_id);
if (i != (int)ToaistRank.BaseRankCount - 1 &&
i != (int)ToaistRank.BaseRankCount + (int)ToaistRank.GodRankCount - 1 &&
i != (int)ToaistRank.TotalRankCount - 1)
{
s_allTaoistRanks[i].m_next = s_allTaoistRanks[i + 1];
}
else
{
s_allTaoistRanks[i].m_next = null;
}
}
initComplete = true;
}
}
public enum ToaistRank
{
TotalRankCount = 15,
BaseRankCount = 9,
GodRankCount = 3,
EvilRankCount = 3,
};
}