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/ItemLogicUtility.cs |  122 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 114 insertions(+), 8 deletions(-)

diff --git a/Main/System/KnapSack/Logic/ItemLogicUtility.cs b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
index 40bbc65..818c197 100644
--- a/Main/System/KnapSack/Logic/ItemLogicUtility.cs
+++ b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
@@ -1272,7 +1272,7 @@
 
 
     // 閫氱敤鏄剧ず鑾峰緱鐨勭墿鍝�
-    public void ShowGetItem(List<Item> items, string info = "", int seconds = 3, string btnName = "", Action func = null, bool isNameShow = true, string eventName = "default")
+    public void ShowGetItem(List<Item> items, string eventName = "default", bool isNameShow = true)
     {
         if (getItemEventName != eventName)
         {
@@ -1300,12 +1300,6 @@
         }
 
 
-        getItemInfo = info;
-        OnGetItem = func;
-        if (btnName == "")
-            btnName = Language.Get("PopConfirmWin_OK");
-        getItemBtnText = btnName;
-        closeSeconds = seconds;
         this.isNameShow = isNameShow;
         OnGetItemShowEvent?.Invoke();
         if (!UIManager.Instance.IsOpenedInList<CommonGetItemWin>())
@@ -1363,5 +1357,117 @@
         getItemEventName = "";
     }
 
-    
+    public void UseItem(string guid, int useCnt = 1, int extra = 0)
+    {
+        var item = packModel.GetItemByGuid(guid);
+        if (item == null)
+        {
+            return;
+        }
+
+        var error = 0;
+        if (CanUseItem(guid, useCnt, out error))
+        {
+            UseItemSendServer(guid, useCnt, extra);
+        }
+        else
+        {
+            switch (error)
+            {
+                case 1:
+                    SysNotifyMgr.Instance.ShowTip("EverydayUseLimit");
+                    break;
+                case 2:
+                    SysNotifyMgr.Instance.ShowTip("UseCntLimit");
+                    break;
+                case 3:
+                    SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_749572");
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+    public bool CanUseItem(string guid, int useCnt, out int error)
+    {
+        var item = packModel.GetItemByGuid(guid);
+        if (item == null)
+        {
+            error = 999;
+            return false;
+        }
+
+
+        if (item.config.Type == 145 && item.config.CDTime > 0)
+        {
+            var createTime = item.GetUseDataFirstValue((int)ItemUseDataKey.createTime);
+            if (createTime > 0)
+            {
+                DateTime useTime;
+                if (item.config.CDTypeEx == 1)
+                {
+                    //itemConfig.CDTime 涓哄ぉ锛岃繃0鐐瑰彲鐢�
+                    useTime = TimeUtility.GetTime((uint)createTime).AddDays(item.config.CDTime);
+                    useTime = TimeUtility.GetDayStartTime(useTime.Year, useTime.Month, useTime.Day);
+                }
+                else
+                {
+                    useTime = TimeUtility.GetTime((uint)createTime).AddSeconds(item.config.CDTime);
+                }
+                if (TimeUtility.ServerNow < useTime)
+                {
+                    error = 3;
+                    return false;
+                }
+            }
+        }
+
+
+        var usedCountToday = packModel.GetItemUsedTimesToday(item.itemId);
+        if (item.config.MaxSkillCnt > 0 && item.config.MaxSkillCnt <= usedCountToday)
+        {
+            error = 1;
+            return false;
+        }
+
+        //var usedCountTotal = packModel.GetItemTotalUsedTimes(item.itemId);
+        // var fruitConfig = AttrFruitConfig.Get(item.itemId);
+        // if (fruitConfig != null)
+        // {
+        //     var limitTimes = 0;
+        //     if (fruitConfig.FuncID == 2)
+        //     {
+        //         limitTimes = alchemyModel.GetAlchemyDrugUseLimit(item.itemId);
+        //     }
+        //     else
+        //     {
+        //         limitTimes = fruitConfig.basicUseLimit;
+        //     }
+        //     if (usedCountTotal >= limitTimes || useCnt > limitTimes)
+        //     {
+        //         error = 1;
+        //         return false;
+        //     }
+        // }
+
+        error = 0;
+        return true;
+    }
+
+    void UseItemSendServer(string guid, int useCnt, int extra)
+    {
+        var itemModel = packModel.GetItemByGuid(guid);
+        if (itemModel == null)
+        {
+            return;
+        }
+
+        var useItem = new CA323_tagCMUseItems();
+        useItem.ItemIndex = (byte)itemModel.gridIndex;
+        useItem.UseCnt = (ushort)useCnt;
+        useItem.ExData = (uint)extra;
+        GameNetSystem.Instance.SendInfo(useItem); //浣跨敤鐗╁搧
+    }
+
 }

--
Gitblit v1.8.0