---@class KLSkillBagPanel:UIKmlLuaPanelBase ---@field view KLSkillBagPanelView local KLSkillBagPanel = class(UIKmlLuaPanelBase) local this = KLSkillBagPanel ---创建时调用一次 function this:Init() local bag_info = string.split(SL:GetConfig("cfg_global", 6).value, '#') self.maxHor = tonumber(bag_info[1]) self.maxVet = tonumber(bag_info[2]) local itemList_ = SL:GetIsFastItemList() local _itemList = SL.Bag:SortItemList(itemList_) ---@type KLUIBagTileScrollViewItem self.bagTileScrollView = GUI:UIPanel_Open("dev/ui/Common/Item/KLUIBagTileScrollView/KLUIBagTileScrollViewItem", self.view.bgGridRoot, self, { itemList = _itemList, id = EBagTileScrollViewId.Bag, hor = self.maxHor, vet = self.maxVet, canDrag = false, forbidClickCallback = self.forbidClick, itemClick = self.ClickItemCallBack, callBackUI = self }) self:RefreshFastItemTip() EquipFunc:ReplaceEquipBagButton({self.view.person_shop_btn,self.view.storage_btn,self.view.recycle_btn,self.view.tidy_btn}) end ---创建或者刷新界面数据时调用 function this:Refresh() end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.closeBtn, self, self.closeBtn) SL:RegisterLUAEvent(Event.BagInfo_Change, self.BagInfo_Change, self) GUI:AddOnClickEvent(self.view.storage_btn, self, self.storage_btn) GUI:AddOnClickEvent(self.view.recycle_btn, self, self.recycle_btn) GUI:AddOnClickEvent(self.view.tidy_btn, self, self.tidy_btn) GUI:AddOnClickEvent(self.view.person_shop_btn, self, self.person_shop_btn) SL:RegisterLUAEvent(LUA_EVENT_BAG_UNLOCK, self.LUA_EVENT_BAG_UNLOCK, self) end function this:LUA_EVENT_BAG_UNLOCK(_, count) self.bagTileScrollView:RefreshForbidGrid(count) end function this:person_shop_btn() if PrivilegeCardManager.iswithStore() then self:OpenShop() else SL:CommonTipsMessage({ stringTblID = 226, ui = self, sureBtnText = "随身买药", cancelBtnText = "传送", cancelCallBack = self.TransferToNpcShop, callback = self.OpenFirsh, littleTipsTextTable = { text = "激活白银特权卡", x = 100, y = -60 }, sureBtnImageData = { src = "button_interface_window6", atlas = "Atlas/Common.spriteatlas" }, cancelBtnImageData = { src = "button_interface_window7", atlas = "Atlas/Common.spriteatlas" }, cancelBtnColor = "#DCE1E5" }) end end function this:tidy_btn() GUI:UIPanel_Close("dev/ui/Common/Item/KLUIBagTileScrollView/KLUIBagTileScrollViewItem") self:Init() end function this:storage_btn() if PrivilegeCardManager.iswithWarehouse() then self:OpenStorage() else SL:CommonTipsMessage({ stringTblID = 227, ui = self, sureBtnText = "随身仓库", cancelBtnText = "传送", cancelCallBack = self.TransferToNpcStorage, callback = self.OpenFirsh, littleTipsTextTable = { text = "激活钻石特权卡", x = 100, y = -60 }, sureBtnImageData = { src = "button_interface_window6", atlas = "Atlas/Common.spriteatlas" }, cancelBtnImageData = { src = "button_interface_window7", atlas = "Atlas/Common.spriteatlas" }, cancelBtnColor = "#DCE1E5" }) end end function this:recycle_btn() self:CloseSkillPanel() GUI:UIPanel_Open("dev/ui/Recover/Panel/KLRecover/KLRecoverPanel") end function this:BagInfo_Change(_, eventData) local is_refresh = false for _, v in ipairs(eventData) do if v.item then local cfgId = v.item.cfgId if SL:HasConfig("cfg_item", cfgId) then local item = SL:GetConfig("cfg_item", cfgId) if item.isFast and item.isFast == 1 then is_refresh = true end end else is_refresh = true end end if is_refresh then self.bagTileScrollView:ClearBagItem() local itemList_ = SL:GetIsFastItemList() local _itemList = BagCellUtil.SortItemList(itemList_) self.bagTileScrollView:RefreshItemByItem(_itemList) self.bagTileScrollView:RefreshInfo() end self:RefreshFastItemTip() end function this:RefreshFastItemTip() local isShow = false ---@type number[] local fastItems = SL:GetMetaValue(EMetaVarGetKey.FAST_ITEM_ID_LIST) if SL:HasConfig("cfg_item", fastItems[1]) then local ownerCount = SL:GetBagItemCount(fastItems[1]) if ownerCount <= 0 then isShow = true end else isShow = true end if SL:HasConfig("cfg_item", fastItems[2]) then local ownerCount = SL:GetBagItemCount(fastItems[2]) if ownerCount <= 0 then isShow = true end else isShow = true end GUI:setVisible(self.view.fastItemTip, isShow) end function this:closeBtn() self:CloseSkillPanel() end function this:Close() end function this:forbidClick() local bag_unlock_info = SL:GetConfig('cfg_global', 107).value local bag_unlock_split = string.split(bag_unlock_info, '#') local itemId = tonumber(bag_unlock_split[1]) local needCount = tonumber(bag_unlock_split[2]) GUI:UIPanel_Open("dev/ui/Common/Panel/KLCommonItemTips/KLCommonItemTipsPanel", nil, nil, { showTips = string.format("是否消耗%s扩充背包空间?", "背包石"), ui = self, cfgId = itemId, needCount = needCount, callback = self.UnlockGrid, }) end function this:UnlockGrid() SL:ReqBagAddCapacityMessage(1) end ---点击背包item回调 ---@param itemData CommonProtos.Item function this:ClickItemCallBack(_, itemData) SL:onLUAEvent(LUA_EVENT_FASTITEM_SET_SELECT, itemData.cfgId) end function this:CloseSkillPanel() GUI:UIPanel_Close("dev/ui/Bag/Panel/KLSkillBag/KLSkillBagPanel") GUI:UIPanel_Close("dev/ui/Skill/Panel/KLUISkillInfo/KLUISkillInfoPanel") GUI:UIPanel_Close("dev/ui/Skill/Panel/KLUISkillDescribe/KLUISkillDescribePanel") GUI:UIPanel_Close("dev/ui/Skill/Panel/KLUISkillSetting/KLUISkillSettingPanel") end function this:OpenFirsh() this:CloseSkillPanel() GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel", nil, nil, { 2 }) end --- 传送到NPC商店(NPC商店功能) function this:TransferToNpcShop() local mapInfo = SL:GetConfig("cfg_map_info", SL:GetMetaValue("MAP_ID"), "id") if mapInfo.nopositionmove == 1 then SL:MessageTip({ id = 116 }) return end SL:showTransferAnimation() SL:ScheduleOnce(0.5, function() SL:SendTransferToNpcMessage(100101, true) end) SL:ScheduleOnce(2, function() if not GUI:GetUI("dev/ui/NPC/Panel/KLNPCShop/KLNPCShopPanel") then SL:OpenNPCShop(1) end end) GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel") this:CloseSkillPanel() end function this:OpenShop() this:CloseSkillPanel() local shop_id = SL:GetMetaValue("GET_NPC_SHOPID", 100101) SL:OpenNPCShop(shop_id) end --- 传送到NPC仓库 function this:TransferToNpcStorage() SL:showTransferAnimation() SL:ScheduleOnce(0.5, function() -- if SL:GetBattleState() then -- SL:TipMessage({ "战斗状态下禁止传送", 1, NoticeType.NoticeMid }) -- return -- end SL:SendTransferToNpcMessage(100107, true) end) GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel") this:CloseSkillPanel() end function this:OpenStorage() this:CloseSkillPanel() GUI:UIPanel_Open("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel", nil, nil, { x = -415, y = 0 }) GUI:UIPanel_Open("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel") SL:HideMainPanel() end return this