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