From 39001a600fcae2bcf27c225df8752d75fb92fef4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 31 十月 2025 11:18:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/KnapSack/Logic/SinglePack.cs |  727 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 366 insertions(+), 361 deletions(-)

diff --git a/Main/System/KnapSack/Logic/SinglePack.cs b/Main/System/KnapSack/Logic/SinglePack.cs
index 20ab7ae..5765d52 100644
--- a/Main/System/KnapSack/Logic/SinglePack.cs
+++ b/Main/System/KnapSack/Logic/SinglePack.cs
@@ -1,388 +1,393 @@
-锘縰sing System;
-using System.Collections.Generic;
+锘縰sing System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using vnxbqy.UI;
 
-namespace vnxbqy.UI
+public class SinglePack
 {
-    public class SinglePack
+    public readonly PackType type;
+    public int unlockedGridCount { get; private set; }  //宸插紑鍚儗鍖呮牸瀛愭暟
+    private Dictionary<int, ItemModel> items = new Dictionary<int, ItemModel>(); //key 鐗╁搧浣嶇疆绱㈠紩
+    private Dictionary<int, List<int>> itemIDs = new Dictionary<int, List<int>>(); //key 鐗╁搧ID锛氱墿鍝佷綅缃储寮�
+
+    public List<string> itemGuidList = new List<string>();  //鍓嶇鐣岄潰GUID鎺掑簭锛屽悇涓儗鍖呮牴鎹疄闄呮儏鍐典娇鐢�
+
+    public SinglePack(PackType type)
     {
-        public readonly PackType type;
-        public int unlockedGridCount { get; private set; }
-        private Dictionary<int, ItemModel> items = new Dictionary<int, ItemModel>(); //key 鐗╁搧浣嶇疆绱㈠紩
-        private Dictionary<int, List<int>> itemIDs = new Dictionary<int, List<int>>(); //key 鐗╁搧ID锛氱墿鍝佷綅缃储寮�
-        public SinglePack(PackType type)
-        {
-            this.type = type;
-        }
+        this.type = type;
+    }
 
-        public bool HasItem(int itemID)
-        {
-            return itemIDs.ContainsKey(itemID);
-        }
+    public bool HasItem(int itemID)
+    {
+        return itemIDs.ContainsKey(itemID);
+    }
 
-        public ItemModel UpdateItem(ItemInfo itemInfo)
+    public ItemModel UpdateItem(ItemInfo itemInfo)
+    {
+        //瀛楀吀绱㈠紩涓虹墿鍝佷綅缃储寮�
+        var index = itemInfo.index;
+        if (!items.ContainsKey(index))
         {
-            //瀛楀吀绱㈠紩涓虹墿鍝佷綅缃储寮�
-            var index = itemInfo.index;
-            if (!items.ContainsKey(index))
+            items.Add(index, new ItemModel(type, itemInfo));
+        }
+        else
+        {
+            //浣嶇疆涓婄殑鐗╁搧鍙樺寲锛屽厛绉婚櫎鍘熸潵鐨�
+            var itemID = items[index].itemId;
+            if (itemIDs.ContainsKey(itemID))
             {
-                items.Add(index, new ItemModel(type, itemInfo));
-            }
-            else
-            {
-                //浣嶇疆涓婄殑鐗╁搧鍙樺寲锛屽厛绉婚櫎鍘熸潵鐨�
-                var itemID = items[index].itemId;
-                if (itemIDs.ContainsKey(itemID))
+                if (itemIDs[itemID].Contains(index))
                 {
-                    if (itemIDs[itemID].Contains(index))
+                    if (itemIDs[itemID].Count == 1)
                     {
-                        if (itemIDs[itemID].Count == 1)
-                        {
-                            itemIDs.Remove(itemID);
-                        }
-                        else
-                        {
-                            itemIDs[itemID].Remove(index);
-                        }
-                    }
-                }
-
-                items[index].SetItemInfo(itemInfo);
-            }
-
-            //瀛楀吀绱㈠紩涓虹墿鍝両D
-            if (!itemIDs.ContainsKey(itemInfo.itemId))
-            {
-                itemIDs.Add(itemInfo.itemId, new List<int>());
-            }
-
-            if (!itemIDs[itemInfo.itemId].Contains(itemInfo.index))
-            {
-                itemIDs[itemInfo.itemId].Add(itemInfo.index);
-            }
-
-            return items[index];
-        }
-
-        public void RemoveItem(int index)
-        {
-            if (items.ContainsKey(index))
-            {
-                //瀛楀吀绱㈠紩涓虹墿鍝両D
-                var itemID = items[index].itemId;
-                if (itemIDs.ContainsKey(itemID))
-                {
-                    if (itemIDs[itemID].Contains(index))
-                    {
-                        if (itemIDs[itemID].Count == 1)
-                        {
-                            itemIDs.Remove(itemID);
-                        }
-                        else
-                        {
-                            itemIDs[itemID].Remove(index);
-                        }
-                    }
-                }
-
-                items.Remove(index);
-            }
-
-        }
-
-        public void SetOpenGridCount(int count)
-        {
-            unlockedGridCount = count;
-        }
-
-        public ItemModel GetItemByIndex(int index)
-        {
-            ItemModel item = null;
-            items.TryGetValue(index, out item);
-            return item;
-        }
-
-        public Dictionary<int, ItemModel> GetAllItems()
-        {
-            return items;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鎸囧畾ID鐨勪竴涓墿鍝�
-        /// </summary>
-        /// <param name="itemId"></param>
-        /// <param name="includeAuction"></param>
-        /// <returns></returns>
-        public ItemModel GetItemByID(int itemId, bool includeAuction = true)
-        {
-            //foreach (var item in items.Values)
-            //{
-            //    if (!includeAuction && item.isAuction)
-            //    {
-            //        continue;
-            //    }
-
-            //    if (item.itemId == itemId)
-            //    {
-            //        return item;
-            //    }
-            //}
-
-            //return null;
-
-            if (itemIDs.ContainsKey(itemId))
-            {
-                foreach (var index in itemIDs[itemId])
-                {
-                    var item = items[index];
-                    if (!includeAuction && item.isAuction)
-                    {
-                        continue;
-                    }
-                    return item;
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍖呭唴鐨勬寚瀹欼D鐨勬墍鏈夌墿鍝�
-        /// </summary>
-        /// <param name="itemId"></param>
-        /// <param name="includeAuction"></param>
-        /// <returns></returns>
-        public List<ItemModel> GetItemsById(int itemId, bool includeAuction = true)
-        {
-            var list = new List<ItemModel>();
-            //foreach (var item in items.Values)
-            //{
-            //    if (!includeAuction && item.isAuction)
-            //    {
-            //        continue;
-            //    }
-
-            //    if (item.itemId == itemId)
-            //    {
-            //        list.Add(item);
-            //    }
-            //}
-
-            if (itemIDs.ContainsKey(itemId))
-            {
-                foreach (var index in itemIDs[itemId])
-                {
-                    var item = items[index];
-                    if (!includeAuction && item.isAuction)
-                    {
-                        continue;
-                    }
-                    list.Add(item);
-                }
-            }
-            return list;
-        }
-
-        public int GetCountById(int itemId, bool includeAuction = true)
-        {
-            var count = 0;
-            //foreach (var item in items.Values)
-            //{
-            //    if (!includeAuction && item.isAuction)
-            //    {
-            //        continue;
-            //    }
-
-            //    if (item.itemId == itemId)
-            //    {
-            //        count += item.count;
-            //    }
-            //}
-
-            if (itemIDs.ContainsKey(itemId))
-            {
-                foreach (var index in itemIDs[itemId])
-                {
-                    var item = items[index];
-                    if (!includeAuction && item.isAuction)
-                    {
-                        continue;
-                    }
-                    count += item.count;
-                }
-            }
-            return count;
-        }
-
-        public List<ItemModel> GetItems(FilterParams filterParams)
-        {
-            var list = new List<ItemModel>();
-            foreach (var item in items.Values)
-            {
-                var levelValid = filterParams.levels == null || filterParams.levels.Contains(item.config.LV);
-                if (!levelValid)
-                {
-                    continue;
-                }
-
-                var qualityValid = filterParams.qualitys == null || filterParams.qualitys.Contains(item.config.ItemColor);
-                if (!qualityValid)
-                {
-                    continue;
-                }
-
-                var typeValid = filterParams.itemTypes == null || filterParams.itemTypes.Contains(item.config.Type);
-                if (!typeValid)
-                {
-                    continue;
-                }
-
-                var equipTypeValid = filterParams.equipTypes == null || filterParams.equipTypes.Contains(item.config.EquipPlace);
-                if (!equipTypeValid)
-                {
-                    continue;
-                }
-
-                var jobValid = filterParams.jobs == null || filterParams.jobs.Contains(item.config.JobLimit);
-                if (!jobValid)
-                {
-                    continue;
-                }
-
-                //var auctionValid = filterParams.isAuction == item.isAuction;
-                //if (!auctionValid)
-                //{
-                //    continue;
-                //}
-
-                var realmValid = filterParams.realmLimit == 0 || filterParams.realmLimit == item.config.RealmLimit;
-                if (!realmValid)
-                {
-                    continue;
-                }
-
-                list.Add(item);
-            }
-
-            return list;
-        }
-
-        public int GetCountByType(int type)
-        {
-            var count = 0;
-            foreach (var item in items.Values)
-            {
-                if (item.config.Type == type)
-                {
-                    count += item.count;
-                }
-            }
-
-            return count;
-        }
-
-        /// <summary>
-        ///  寰楀埌鍚屼竴涓猧d鎸囧畾鏁伴噺鐨勭墿鍝佹牸瀛愬簭鍙�
-        /// </summary>
-        /// <param name="itemId"></param>
-        /// <param name="needCount"></param>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        public List<int> GetItemIndexsAppointedCount(int itemId, int needCount, bool includeAuction = true)
-        {
-            //var goalItems = new List<ItemModel>();
-            //foreach (var item in this.items.Values)
-            //{
-            //    if (!includeAuction && item.isAuction)
-            //    {
-            //        continue;
-            //    }
-
-            //    if (item.itemId == itemId)
-            //    {
-            //        goalItems.Add(item);
-            //    }
-            //}
-
-            var itemIndexs = new List<int>();
-            var count = 0;
-            //for (var i = 0; i < goalItems.Count; i++)
-            //{
-            //    if (count < needCount)
-            //    {
-            //        itemIndexs.Add(goalItems[i].gridIndex);
-            //        count += goalItems[i].count;
-            //    }
-            //    else
-            //    {
-            //        break;
-            //    }
-
-            //}
-
-            if (itemIDs.ContainsKey(itemId))
-            {
-                foreach (var index in itemIDs[itemId])
-                {
-                    var item = items[index];
-                    if (!includeAuction && item.isAuction)
-                    {
-                        continue;
-                    }
-                    if (count < needCount)
-                    {
-                        itemIndexs.Add(index);
-                        count += item.count;
+                        itemIDs.Remove(itemID);
                     }
                     else
                     {
-                        break;
+                        itemIDs[itemID].Remove(index);
                     }
                 }
             }
-            return itemIndexs;
+
+            items[index].SetItemInfo(itemInfo);
         }
 
-        /// <summary>
-        /// 寰楀埌绗竴涓┖鏍间綅缃储寮�
-        /// </summary>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        public int GetFirstEmptyGridIndex()
+        //瀛楀吀绱㈠紩涓虹墿鍝両D
+        if (!itemIDs.ContainsKey(itemInfo.itemId))
         {
-            for (var index = 0; index < unlockedGridCount; index++)
+            itemIDs.Add(itemInfo.itemId, new List<int>());
+        }
+
+        if (!itemIDs[itemInfo.itemId].Contains(itemInfo.index))
+        {
+            itemIDs[itemInfo.itemId].Add(itemInfo.index);
+        }
+
+        return items[index];
+    }
+
+    public void RemoveItem(int index)
+    {
+        if (items.ContainsKey(index))
+        {
+            //瀛楀吀绱㈠紩涓虹墿鍝両D
+            var itemID = items[index].itemId;
+            if (itemIDs.ContainsKey(itemID))
             {
-                if (!items.ContainsKey(index))
+                if (itemIDs[itemID].Contains(index))
                 {
-                    return index;
+                    if (itemIDs[itemID].Count == 1)
+                    {
+                        itemIDs.Remove(itemID);
+                    }
+                    else
+                    {
+                        itemIDs[itemID].Remove(index);
+                    }
                 }
             }
 
-            return -1;
-        }
-
-        public int GetEmptyGridCount()
-        {
-            return unlockedGridCount - items.Count;
-        }
-
-        public void Clear()
-        {
-            items.Clear();
-            itemIDs.Clear();
-        }
-
-        public struct FilterParams
-        {
-            public List<int> levels;
-            public List<int> qualitys;
-            public List<int> itemTypes;
-            public List<int> equipTypes;
-            public int realmLimit;
-            public bool isAuction;
-            public List<int> jobs;
+            items.Remove(index);
         }
 
     }
-}
+
+    public void SetOpenGridCount(int count)
+    {
+        unlockedGridCount = count;
+    }
+
+    public ItemModel GetItemByIndex(int index)
+    {
+        ItemModel item = null;
+        items.TryGetValue(index, out item);
+        return item;
+    }
+
+    public Dictionary<int, ItemModel> GetAllItems()
+    {
+        return items;
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎸囧畾ID鐨勪竴涓墿鍝�
+    /// </summary>
+    /// <param name="itemId"></param>
+    /// <param name="includeAuction"></param>
+    /// <returns></returns>
+    public ItemModel GetItemByID(int itemId, bool includeAuction = true)
+    {
+        //foreach (var item in items.Values)
+        //{
+        //    if (!includeAuction && item.isAuction)
+        //    {
+        //        continue;
+        //    }
+
+        //    if (item.itemId == itemId)
+        //    {
+        //        return item;
+        //    }
+        //}
+
+        //return null;
+
+        if (itemIDs.ContainsKey(itemId))
+        {
+            foreach (var index in itemIDs[itemId])
+            {
+                var item = items[index];
+                if (!includeAuction && item.isAuction)
+                {
+                    continue;
+                }
+                return item;
+            }
+        }
+        return null;
+    }
+
+    /// <summary>
+    /// 鑾峰彇鍖呭唴鐨勬寚瀹欼D鐨勬墍鏈夌墿鍝�
+    /// </summary>
+    /// <param name="itemId"></param>
+    /// <param name="includeAuction"></param>
+    /// <returns></returns>
+    public List<ItemModel> GetItemsById(int itemId, bool includeAuction = true)
+    {
+        var list = new List<ItemModel>();
+        //foreach (var item in items.Values)
+        //{
+        //    if (!includeAuction && item.isAuction)
+        //    {
+        //        continue;
+        //    }
+
+        //    if (item.itemId == itemId)
+        //    {
+        //        list.Add(item);
+        //    }
+        //}
+
+        if (itemIDs.ContainsKey(itemId))
+        {
+            foreach (var index in itemIDs[itemId])
+            {
+                var item = items[index];
+                if (!includeAuction && item.isAuction)
+                {
+                    continue;
+                }
+                list.Add(item);
+            }
+        }
+        return list;
+    }
+
+    public List<string> GetItemGUIDListById(int itemId)
+    {
+        var list = new List<string>();
+        if (itemIDs.ContainsKey(itemId))
+        {
+            foreach (var index in itemIDs[itemId])
+            {
+                var item = items[index];
+                list.Add(item.guid);
+            }
+        }
+        return list;
+    }
+
+
+
+    public long GetCountById(int itemId, bool includeAuction = true)
+    {
+        long count = 0;
+
+        //閮ㄥ垎璐у竵鍜岀墿鍝佺粦瀹�
+        if (GeneralDefine.itemMoneyCountDict.ContainsKey(itemId))
+        {
+            //灞曠ず璐у竵鏁伴噺鐨勭墿鍝�
+            count = UIHelper.GetMoneyCnt(GeneralDefine.itemMoneyCountDict[itemId]);
+        }
+
+        if (itemIDs.ContainsKey(itemId))
+        {
+            foreach (var index in itemIDs[itemId])
+            {
+                var item = items[index];
+                if (!includeAuction && item.isAuction)
+                {
+                    continue;
+                }
+                count += item.count;
+            }
+        }
+        return count;
+    }
+
+    public List<ItemModel> GetItems()
+    {
+        return items.Values.ToList();
+    }
+
+    public List<int> GetItemIndexs()
+    {
+        return items.Keys.ToList();
+    }
+    
+    public List<ItemModel> GetItems(FilterParams filterParams)
+    {
+        var list = new List<ItemModel>();
+        foreach (var item in items.Values)
+        {
+            var levelValid = filterParams.levels == null || filterParams.levels.Contains(item.config.LV);
+            if (!levelValid)
+            {
+                continue;
+            }
+
+            var qualityValid = filterParams.qualitys == null || filterParams.qualitys.Contains(item.config.ItemColor);
+            if (!qualityValid)
+            {
+                continue;
+            }
+
+            var typeValid = filterParams.itemTypes == null || filterParams.itemTypes.Contains(item.config.Type);
+            if (!typeValid)
+            {
+                continue;
+            }
+
+            var equipTypeValid = filterParams.equipTypes == null || filterParams.equipTypes.Contains(item.config.EquipPlace);
+            if (!equipTypeValid)
+            {
+                continue;
+            }
+
+            var jobValid = filterParams.jobs == null || filterParams.jobs.Contains(item.config.JobLimit);
+            if (!jobValid)
+            {
+                continue;
+            }
+
+            list.Add(item);
+        }
+
+        return list;
+    }
+
+    public int GetCountByType(int type)
+    {
+        var count = 0;
+        foreach (var item in items.Values)
+        {
+            if (item.config.Type == type)
+            {
+                count += item.count;
+            }
+        }
+
+        return count;
+    }
+
+    /// <summary>
+    ///  寰楀埌鍚屼竴涓猧d鎸囧畾鏁伴噺鐨勭墿鍝佹牸瀛愬簭鍙�
+    /// </summary>
+    /// <param name="itemId"></param>
+    /// <param name="needCount"></param>
+    /// <param name="type"></param>
+    /// <returns></returns>
+    public List<int> GetItemIndexsAppointedCount(int itemId, int needCount, bool includeAuction = true)
+    {
+        //var goalItems = new List<ItemModel>();
+        //foreach (var item in this.items.Values)
+        //{
+        //    if (!includeAuction && item.isAuction)
+        //    {
+        //        continue;
+        //    }
+
+        //    if (item.itemId == itemId)
+        //    {
+        //        goalItems.Add(item);
+        //    }
+        //}
+
+        var itemIndexs = new List<int>();
+        var count = 0;
+        //for (var i = 0; i < goalItems.Count; i++)
+        //{
+        //    if (count < needCount)
+        //    {
+        //        itemIndexs.Add(goalItems[i].gridIndex);
+        //        count += goalItems[i].count;
+        //    }
+        //    else
+        //    {
+        //        break;
+        //    }
+
+        //}
+
+        if (itemIDs.ContainsKey(itemId))
+        {
+            foreach (var index in itemIDs[itemId])
+            {
+                var item = items[index];
+                if (!includeAuction && item.isAuction)
+                {
+                    continue;
+                }
+                if (count < needCount)
+                {
+                    itemIndexs.Add(index);
+                    count += item.count;
+                }
+                else
+                {
+                    break;
+                }
+            }
+        }
+        return itemIndexs;
+    }
+
+    /// <summary>
+    /// 寰楀埌绗竴涓┖鏍间綅缃储寮�
+    /// </summary>
+    /// <param name="type"></param>
+    /// <returns></returns>
+    public int GetFirstEmptyGridIndex()
+    {
+        for (var index = 0; index < unlockedGridCount; index++)
+        {
+            if (!items.ContainsKey(index))
+            {
+                return index;
+            }
+        }
+
+        return -1;
+    }
+
+    public int GetEmptyGridCount()
+    {
+        return unlockedGridCount - items.Count;
+    }
+
+    public void Clear()
+    {
+        items.Clear();
+        itemIDs.Clear();
+    }
+
+    public class FilterParams
+    {
+        public List<int> levels;
+        public List<int> qualitys;
+        public List<int> itemTypes;
+        public List<int> equipTypes;
+        public bool isAuction;
+        public List<int> jobs;
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.8.0