121 lines
2.7 KiB
C#
121 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using cfg.LevelCfg;
|
|
using cfg.RedPoint;
|
|
using UnityEngine;
|
|
|
|
public class ChapterInfo
|
|
{
|
|
private DataChapter _config;
|
|
|
|
private List<LevelGroupInfo> _levelGroupList = new();
|
|
|
|
private RedPointNode _redPointNode;
|
|
|
|
public int ID => _config.Id;
|
|
|
|
public LevelChapterType GroupType => _config.Type;
|
|
|
|
public string MaterialIcon => _config.MaterialIcon;
|
|
|
|
public string Name => StringManager.Instance.GetLocalizeTextByKey(_config.Name);
|
|
|
|
public string Desc => StringManager.Instance.GetLocalizeTextByKey(_config.Desc);
|
|
|
|
public int Index => _config.Index;
|
|
|
|
public RedPointNode RedPointNode => _redPointNode;
|
|
|
|
public LevelGroupInfo PlotChapter
|
|
{
|
|
get
|
|
{
|
|
return _levelGroupList.FirstOrDefault((chapter) => chapter.LevelType == LevelType.Plot);
|
|
}
|
|
}
|
|
|
|
public LevelGroupInfo EasyChapter
|
|
{
|
|
get
|
|
{
|
|
return _levelGroupList.FirstOrDefault((chapter) => chapter.LevelType == LevelType.Easy);
|
|
}
|
|
}
|
|
|
|
public LevelGroupInfo HardChapter
|
|
{
|
|
get
|
|
{
|
|
return _levelGroupList.FirstOrDefault((chapter) => chapter.LevelType == LevelType.Hard);
|
|
}
|
|
}
|
|
|
|
public int StarCount
|
|
{
|
|
get
|
|
{
|
|
var count = 0;
|
|
foreach (var chapterInfo in _levelGroupList)
|
|
{
|
|
count += chapterInfo.StarCount;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
}
|
|
|
|
public int StarMax
|
|
{
|
|
get
|
|
{
|
|
var count = 0;
|
|
foreach (var chapterInfo in _levelGroupList)
|
|
{
|
|
count += chapterInfo.StarMax;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
}
|
|
|
|
public bool IsLock
|
|
{
|
|
get
|
|
{
|
|
foreach (var chapterInfo in _levelGroupList)
|
|
{
|
|
if (!chapterInfo.IsLock)
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public ChapterInfo(DataChapter config)
|
|
{
|
|
_config = config;
|
|
}
|
|
|
|
public void AddChapter(LevelGroupInfo levelGroupInfo)
|
|
{
|
|
if (!_levelGroupList.Contains(levelGroupInfo))
|
|
{
|
|
_levelGroupList.Add(levelGroupInfo);
|
|
}
|
|
else
|
|
{
|
|
DebugUtil.LogError($"cant add chapter,chapterID:{levelGroupInfo.ID}");
|
|
}
|
|
}
|
|
|
|
public void ConstructRedPointTree(int parentID)
|
|
{
|
|
_redPointNode = RedPointManager.Instance.AddDynamicNode(NodeType.Normal, parentID);
|
|
foreach (var chapterInfo in _levelGroupList)
|
|
{
|
|
chapterInfo.ConstructRedPointTree(_redPointNode);
|
|
}
|
|
}
|
|
} |