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