using System.Collections; using System.Collections.Generic; using System.Linq; using cfg.LevelCfg; using cfg.RedPoint; using UnityEngine; /// /// 章节信息 /// public class ChapterInfo: IRedPointTreeNode { /// /// 章节配置 /// private DataChapter cfg; /// /// 关卡组信息列表 /// private List listLevelGroupInfo = new(); /// /// 红点 /// private RedPointNode redPointNode; #region 属性 /// /// 章节配置ID /// public int ID { get { return cfg.Id; } } public E_ChapterType ChapterType => cfg.Type; public string MaterialIcon => cfg.MaterialIcon; public string Name => StringManager.Instance.GetLocalizeTextByKey(cfg.Name); public string Desc => StringManager.Instance.GetLocalizeTextByKey(cfg.Desc); //章节序号 public int Index => listLevelGroupInfo[0].FirstOrDefault()?.ChapterIndex ?? 0; public RedPointNode RedPointNode => redPointNode; public LevelGroupInfo EasyLevelGroup { get { return listLevelGroupInfo.FirstOrDefault((cfg) => cfg.LevelDifficulty == E_LevelDifficulty.Easy); } } public LevelGroupInfo HardLevelGroup { get { return listLevelGroupInfo.FirstOrDefault((cfg) => cfg.LevelDifficulty == E_LevelDifficulty.Hard); } } public int StarCount { get { var count = 0; foreach (var lgi in listLevelGroupInfo) { count += lgi.StarCount; } return count; } } public int StarMax { get { var count = 0; foreach (var lgi in listLevelGroupInfo) { count += lgi.StarMax; } return count; } } public bool IsLock { get { foreach (var lgi in listLevelGroupInfo) { if (!lgi.IsLock) return false; } return true; } } public IEnumerable AllLevelInfo { get { foreach (var levelGroupInfo in listLevelGroupInfo) { foreach (var levelInfo in levelGroupInfo) { yield return levelInfo; } } } } #endregion public ChapterInfo(DataChapter config) { cfg = config; } public void AddLevelGroup(LevelGroupInfo levelGroupInfo) { if (!listLevelGroupInfo.Contains(levelGroupInfo)) { listLevelGroupInfo.Add(levelGroupInfo); } else { DebugUtil.LogError($"cant add levelGroup,levelGroupID:{levelGroupInfo.ID}"); } } public void ConstructRedPointTree(int parentID) { redPointNode = RedPointManager.Instance.AddDynamicNode(NodeType.Normal, parentID); foreach (var lgi in listLevelGroupInfo) { lgi.ConstructRedPointTree(redPointNode); } } public void ConstructRedPointTree(RedPointNode parent) { throw new System.NotImplementedException(); } // public void InitAllLevelSortIndex() // { // var allLevelInfo = AllLevelInfo.ToList(); // allLevelInfo.Sort((a, b) => a.ID.CompareTo(b.ID)); // for (int i = 0; i < allLevelInfo.Count; i++) // { // allLevelInfo[i].LevelIndex = i; // } // } }