From 47c19fc603a6aae4eac12a0e89cc9e45bf85dbdd Mon Sep 17 00:00:00 2001 From: yurui <952870061@qq.com> Date: Mon, 10 Mar 2025 15:07:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=B8=8A=E6=AC=A1=E5=85=B3?= =?UTF-8?q?=E5=8D=A1=E7=9A=84=E8=87=AA=E5=8A=A8=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SelectLevel/UI_LevelSelectController.cs | 66 ++++++++++++------- 1 file changed, 43 insertions(+), 23 deletions(-) diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/SelectLevel/UI_LevelSelectController.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/SelectLevel/UI_LevelSelectController.cs index 7eabcb79a33..efe792f81bb 100644 --- a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/SelectLevel/UI_LevelSelectController.cs +++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/SelectLevel/UI_LevelSelectController.cs @@ -300,6 +300,10 @@ public class UI_LevelSelectController : UIWindow /// 选中章节 /// private readonly Action selectChapterAction; + /// + /// 上次战斗的关卡 + /// + private LevelInfo lastFightLevel; #region 属性 /// @@ -365,10 +369,12 @@ public class UI_LevelSelectController : UIWindow /// /// /// 是否上次战斗的关卡 - public void SetInfo(ChapterInfo info, bool isLastFight) + public void SetInfo(ChapterInfo info, LevelInfo lastFightLevelInfo) { chapterInfo = info; + lastFightLevel = lastFightLevelInfo; + redPointUIController.NodeID = chapterInfo.RedPoint.ID; textChapterName.text = chapterInfo.Name; textChapterDesc.text = chapterInfo.Desc; @@ -397,14 +403,17 @@ public class UI_LevelSelectController : UIWindow IsDifficultLock = true; } - goLast.IsScaleShow(isLastFight); + goLast.IsScaleShow(lastFightLevel.ChapterInfo.Cfg.Id == chapterInfo.Cfg.Id); IsScaleShow = true; } private void OnClick() { - selectChapterAction?.Invoke(chapterInfo, E_LevelDifficulty.Easy); + if (null == lastFightLevel || lastFightLevel.ChapterInfo.Cfg.Id != chapterInfo.Cfg.Id) + selectChapterAction?.Invoke(chapterInfo, E_LevelDifficulty.Easy); + else + selectChapterAction?.Invoke(chapterInfo, lastFightLevel.GroupInfo.Cfg.LevelDifficulty); } } @@ -412,10 +421,7 @@ public class UI_LevelSelectController : UIWindow /// 选项字典 /// private readonly Dictionary dicChapterItem = new(); - /// - /// 上次战斗的章节id - /// - private int lastFightChapterId; + private LevelInfo lastLevelInfo; public MainChapter(GameObject root, Action selectChapter) : base(root, E_ChapterType.Main, selectChapter) { @@ -425,11 +431,7 @@ public class UI_LevelSelectController : UIWindow { base.SetInfo(); - LevelInfo levelInfo = LevelManager.Instance.GetLastFightLevelInfo(chapterType); - if (null == levelInfo) - lastFightChapterId = -1; - else - lastFightChapterId = levelInfo.ChapterInfo.Cfg.Id; + lastLevelInfo = LevelManager.Instance.GetLastFightLevelInfo(chapterType); recycleView.ShowList(listChapterInfo.Count); @@ -459,7 +461,7 @@ public class UI_LevelSelectController : UIWindow } ChapterInfo chapterInfo = listChapterInfo[index]; - chapterItem.SetInfo(chapterInfo, chapterInfo.Cfg.Id == lastFightChapterId); + chapterItem.SetInfo(chapterInfo, lastLevelInfo); } } @@ -980,17 +982,17 @@ public class UI_LevelSelectController : UIWindow { if (null == chapterInfo) { - levelList.SetInfo(null); + levelList.SetInfo(null, E_ChapterType.Count); return; } if (!chapterInfo.TryGetGroupInfo(levelDifficulty, out levelGroupInfo)) { - levelList.SetInfo(null); + levelList.SetInfo(null, E_ChapterType.Count); return; } - levelList.SetInfo(levelGroupInfo.ListLevelInfo); + levelList.SetInfo(levelGroupInfo.ListLevelInfo, levelGroupInfo.ChapterInfo.Cfg.Type); } } @@ -1792,7 +1794,7 @@ public class UI_LevelSelectController : UIWindow recycleView.Init(RefreshCell); } - public async void SetInfo(List listInfo) + public async void SetInfo(List listInfo, E_ChapterType chapterType) { listLevelInfo = listInfo; if (null == listLevelInfo) @@ -1803,15 +1805,33 @@ public class UI_LevelSelectController : UIWindow return; } - int index = 0; // 最后一个解锁的关卡信息 - for (int i = listInfo.Count - 1; i >= 0; --i) + #region 记录需要跳转到的指定位置 + int index = -1; // 上次通过位置 + LevelInfo lastlevelInfo = LevelManager.Instance.GetLastFightLevelInfo(chapterType); + if (null != lastlevelInfo) { - if (listInfo[i].IsLock) - continue; + for (int i = 0; i < listLevelInfo.Count; ++i) + { + if (listLevelInfo[i].Cfg.Id != lastlevelInfo.Cfg.Id) + continue; - index = i; - break; + index = i; + break; + } } + if (-1 == index) + { + index = 0; // 最后一个解锁的关卡信息 + for (int i = listLevelInfo.Count - 1; i >= 0; --i) + { + if (listLevelInfo[i].IsLock) + continue; + + index = i; + break; + } + } + #endregion recycleView.ShowList(listLevelInfo.Count); IsScaleShow = true;