From cad87129e5ea2fd23cc195ed0444bd38f1117aa7 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 05 八月 2025 15:51:54 +0800 Subject: [PATCH] 79 【常规】背包 - 随机宝箱界面,自选宝箱界面,获得物品奖励界面 --- Main/System/KnapSack/Logic/CommonGetItemWin.cs | 174 +++++++++++++++++++++++++--------------------------------- 1 files changed, 75 insertions(+), 99 deletions(-) diff --git a/Main/System/KnapSack/Logic/CommonGetItemWin.cs b/Main/System/KnapSack/Logic/CommonGetItemWin.cs index 7e7f3d6..a2ebe00 100644 --- a/Main/System/KnapSack/Logic/CommonGetItemWin.cs +++ b/Main/System/KnapSack/Logic/CommonGetItemWin.cs @@ -1,111 +1,87 @@ -锘縰sing System.Linq; +锘縰sing System.Collections.Generic; +using System.Linq; using UnityEngine; using UnityEngine.UI; - //鐢ㄤ簬鏄剧ず鑾峰緱鐗╁搧鐨勭獥鍙� - public class CommonGetItemWin : UIBase +//鐢ㄤ簬鏄剧ず鑾峰緱鐗╁搧鐨勭獥鍙� +public class CommonGetItemWin : UIBase +{ + [SerializeField] ScrollerController scroller; + + + protected override void OnPreOpen() { - [SerializeField] ScrollerController scroller; - [SerializeField] RichText desc; - [SerializeField] Button sureBtn; - [SerializeField] Text sureText; - [SerializeField] TextEx closeText; + ItemLogicUtility.Instance.OnGetItemShowEvent += OnGetItemShowEvent; + scroller.OnRefreshCell += OnRefreshCell; + CreateScroller(); + } - float openTime; + protected override void OnPreClose() + { + ItemLogicUtility.Instance.OnGetItemShowEvent -= OnGetItemShowEvent; + scroller.OnRefreshCell -= OnRefreshCell; + ItemLogicUtility.Instance.ClearGetItem(); - protected override void InitComponent() + } + + List<Item> showItems = new List<Item>(); + void CreateScroller() + { + scroller.Refresh(); + showItems = ItemLogicUtility.Instance.totalShowItems.Values.ToList(); + showItems.Sort(SortItem); + for (int i = 0; i < showItems.Count; i++) { - base.InitComponent(); - Debug.Log("鍒濆鍖栭�氱敤鑾峰緱鐗╁搧绐楀彛"); - sureBtn.SetListener(() => UIManager.Instance.CloseWindow<CommonGetItemWin>()); - } - - public override void Refresh() - { - base.Refresh(); - Debug.Log("鍒锋柊閫氱敤鑾峰緱鐗╁搧绐楀彛"); - } - - protected override void OnPreOpen() - { - Refresh(); - ItemLogicUtility.Instance.OnGetItemShowEvent += OnGetItemShowEvent; - scroller.OnRefreshCell += OnRefreshCell; - desc.SetActive(!string.IsNullOrEmpty(ItemLogicUtility.Instance.getItemInfo)); - desc.text = ItemLogicUtility.Instance.getItemInfo; - sureText.text = ItemLogicUtility.Instance.getItemBtnText; - CreateScroller(); - closeText.text = Language.Get("L2004"); - openTime = Time.time; - } - - - protected override void OnPreClose() - { - ItemLogicUtility.Instance.OnGetItemShowEvent -= OnGetItemShowEvent; - scroller.OnRefreshCell -= OnRefreshCell; - ItemLogicUtility.Instance.OnGetItem?.Invoke(); - ItemLogicUtility.Instance.ClearGetItem(); - - } - - void CreateScroller() - { - scroller.Refresh(); - var keys = ItemLogicUtility.Instance.totalShowItems.Keys.ToList(); - int rowCount = (int)Mathf.Ceil((float)keys.Count / 5); - for (int i = 0; i < rowCount; i++) - { + if (i % 5 == 0) + { scroller.AddCell(ScrollerDataType.Header, i); } - scroller.Restart(); } - - float needRefreshTime; //閬垮厤灏佸寘杩囧鍗¢】 - void OnGetItemShowEvent() - { - needRefreshTime = Time.time + 0.3f; - - } - - void RefreshScroller() - { - if (needRefreshTime <= 0) - return; - - if (Time.time < needRefreshTime) - return; - - if (scroller.GetNumberOfCells(scroller.m_Scorller) != ItemLogicUtility.Instance.totalShowItems.Count) - { - CreateScroller(); - } - else - { - scroller.m_Scorller.RefreshActiveCellViews(); - } - needRefreshTime = 0; - } - - protected void LateUpdate() - { - RefreshScroller(); - if (ItemLogicUtility.Instance.closeSeconds == 0) - return; - - float closeTime = ItemLogicUtility.Instance.closeSeconds - (Time.time - openTime); - if (closeTime <= 0) - { - UIManager.Instance.CloseWindow<CommonGetItemWin>(); - return; - } - closeText.text = Language.Get("AutoCloseAfterSeconds", (int)closeTime); - } - - void OnRefreshCell(ScrollerDataType type, CellView cell) - { - var _cell = cell as CommonGetItemCell; - _cell?.Display(cell.index); - } + scroller.Restart(); } + + int SortItem(Item itemA, Item itemB) + { + var itemConfigA = ItemConfig.Get(itemA.id); + var itemConfigB = ItemConfig.Get(itemB.id); + return itemConfigB.ItemColor - itemConfigA.ItemColor; + } + + float needRefreshTime; //閬垮厤灏佸寘杩囧鍗¢】 + void OnGetItemShowEvent() + { + needRefreshTime = Time.time + 0.3f; + + } + + void RefreshScroller() + { + if (needRefreshTime <= 0) + return; + + if (Time.time < needRefreshTime) + return; + + if (scroller.GetNumberOfCells(scroller.m_Scorller) != ItemLogicUtility.Instance.totalShowItems.Count) + { + CreateScroller(); + } + else + { + scroller.m_Scorller.RefreshActiveCellViews(); + } + needRefreshTime = 0; + } + + protected void LateUpdate() + { + RefreshScroller(); + } + + void OnRefreshCell(ScrollerDataType type, CellView cell) + { + var _cell = cell as CommonGetItemCell; + _cell?.Display(cell.index, showItems); + } +} -- Gitblit v1.8.0