2023-10-24 14:58:21 +08:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
2023-10-26 20:20:11 +08:00
|
|
|
using System.Linq;
|
2023-10-24 14:58:21 +08:00
|
|
|
using cfg.LevelCfg;
|
2023-11-02 20:02:10 +08:00
|
|
|
using cfg.RedPoint;
|
2023-10-24 14:58:21 +08:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
2024-06-27 18:55:53 +08:00
|
|
|
public class ChapterInfo: IRedPointTreeNode
|
2023-10-24 14:58:21 +08:00
|
|
|
{
|
2024-01-05 18:26:18 +08:00
|
|
|
private DataChapter _config;
|
2023-10-24 14:58:21 +08:00
|
|
|
|
2024-01-05 19:15:21 +08:00
|
|
|
private List<LevelGroupInfo> _levelGroupList = new();
|
2023-10-24 14:58:21 +08:00
|
|
|
|
2023-11-02 20:02:10 +08:00
|
|
|
private RedPointNode _redPointNode;
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2023-10-24 14:58:21 +08:00
|
|
|
public int ID => _config.Id;
|
|
|
|
|
|
2024-01-18 16:02:45 +08:00
|
|
|
public LevelChapterType ChapterType => _config.Type;
|
2023-10-24 14:58:21 +08:00
|
|
|
|
|
|
|
|
public string MaterialIcon => _config.MaterialIcon;
|
|
|
|
|
|
|
|
|
|
public string Name => StringManager.Instance.GetLocalizeTextByKey(_config.Name);
|
|
|
|
|
|
|
|
|
|
public string Desc => StringManager.Instance.GetLocalizeTextByKey(_config.Desc);
|
|
|
|
|
|
2024-02-06 13:29:01 +08:00
|
|
|
//章节序号
|
|
|
|
|
public int Index => _levelGroupList[0].FirstOrDefault()?.ChapterIndex ?? 0;
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2023-11-02 20:02:10 +08:00
|
|
|
public RedPointNode RedPointNode => _redPointNode;
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2024-01-05 19:35:51 +08:00
|
|
|
public LevelGroupInfo PlotLevelGroup
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-18 16:02:45 +08:00
|
|
|
get { return _levelGroupList.FirstOrDefault((lgi) => lgi.LevelType == LevelType.Plot); }
|
2023-10-26 20:20:11 +08:00
|
|
|
}
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2024-01-05 19:35:51 +08:00
|
|
|
public LevelGroupInfo EasyLevelGroup
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-18 16:02:45 +08:00
|
|
|
get { return _levelGroupList.FirstOrDefault((lgi) => lgi.LevelType == LevelType.Easy); }
|
2023-10-26 20:20:11 +08:00
|
|
|
}
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2024-01-05 19:35:51 +08:00
|
|
|
public LevelGroupInfo HardLevelGroup
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-18 16:02:45 +08:00
|
|
|
get { return _levelGroupList.FirstOrDefault((lgi) => lgi.LevelType == LevelType.Hard); }
|
2023-10-26 20:20:11 +08:00
|
|
|
}
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2023-10-26 20:20:11 +08:00
|
|
|
public int StarCount
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
var count = 0;
|
2024-01-05 19:35:51 +08:00
|
|
|
foreach (var lgi in _levelGroupList)
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
count += lgi.StarCount;
|
2023-10-26 20:20:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return count;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int StarMax
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
var count = 0;
|
2024-01-05 19:35:51 +08:00
|
|
|
foreach (var lgi in _levelGroupList)
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
count += lgi.StarMax;
|
2023-10-26 20:20:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return count;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsLock
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
foreach (var lgi in _levelGroupList)
|
2023-10-26 20:20:11 +08:00
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
if (!lgi.IsLock)
|
2023-10-26 20:20:11 +08:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-18 16:02:45 +08:00
|
|
|
public IEnumerable<LevelInfo> AllLevelInfo
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
foreach (var levelGroupInfo in _levelGroupList)
|
|
|
|
|
{
|
|
|
|
|
foreach (var levelInfo in levelGroupInfo)
|
|
|
|
|
{
|
|
|
|
|
yield return levelInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-05 19:15:21 +08:00
|
|
|
public ChapterInfo(DataChapter config)
|
2023-10-24 14:58:21 +08:00
|
|
|
{
|
|
|
|
|
_config = config;
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-05 19:35:51 +08:00
|
|
|
public void AddLevelGroup(LevelGroupInfo levelGroupInfo)
|
2023-10-24 14:58:21 +08:00
|
|
|
{
|
2024-01-05 19:15:21 +08:00
|
|
|
if (!_levelGroupList.Contains(levelGroupInfo))
|
2023-10-24 14:58:21 +08:00
|
|
|
{
|
2024-01-05 19:15:21 +08:00
|
|
|
_levelGroupList.Add(levelGroupInfo);
|
2023-10-24 14:58:21 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
DebugUtil.LogError($"cant add levelGroup,levelGroupID:{levelGroupInfo.ID}");
|
2023-10-24 14:58:21 +08:00
|
|
|
}
|
|
|
|
|
}
|
2023-11-02 20:02:10 +08:00
|
|
|
|
|
|
|
|
public void ConstructRedPointTree(int parentID)
|
|
|
|
|
{
|
|
|
|
|
_redPointNode = RedPointManager.Instance.AddDynamicNode(NodeType.Normal, parentID);
|
2024-01-05 19:35:51 +08:00
|
|
|
foreach (var lgi in _levelGroupList)
|
2023-11-02 20:02:10 +08:00
|
|
|
{
|
2024-01-05 19:35:51 +08:00
|
|
|
lgi.ConstructRedPointTree(_redPointNode);
|
2023-11-02 20:02:10 +08:00
|
|
|
}
|
|
|
|
|
}
|
2024-01-18 16:02:45 +08:00
|
|
|
|
2024-06-27 18:55:53 +08:00
|
|
|
public void ConstructRedPointTree(RedPointNode parent)
|
|
|
|
|
{
|
|
|
|
|
throw new System.NotImplementedException();
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 13:29:01 +08:00
|
|
|
// 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;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
2023-10-24 14:58:21 +08:00
|
|
|
}
|