123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- ---@class KLUIBagPanel:UIKmlLuaPanelBase
- ---@field view KLUIBagPanelView
- local KLUIBagPanel = class(UIKmlLuaPanelBase)
- local this = KLUIBagPanel
- ---创建时调用一次
- function KLUIBagPanel:Init()
- self:InitData(self.args)
- local bag_info = string.split(SL:GetConfig("cfg_global", 6).value, '#')
- local forbidNum = 0
- local increaseRow, needLockRow
- self.JumpSelectId = nil
- if self.args then
- for i, v in pairs(self.args) do
- if string.split(i, "_")[1] == "JumpSelectItem" then
- if SL:GetBagItemCount(tonumber(v)) > 0 then
- self.JumpSelectId = tonumber(v)
- end
- end
- end
- end
- ---特权暂时没这个功能,先注释,别删
- -- if #bag_info >= 5 then
- -- increaseRow, needLockRow = PrivilegeCardManager.GetBagCanShowRow(tonumber(bag_info[1]))
- -- self.maxHor = tonumber(bag_info[1]) + increaseRow
- -- self.maxVet = tonumber(bag_info[2])
- -- forbidNum = PrivilegeCardManager.GetBagSiftLockGridNum()
- -- else
- self.maxHor = tonumber(bag_info[1])
- self.maxVet = tonumber(bag_info[2])
- -- end
- ---@type KLUIBagTileScrollViewItem
- GUI:UIPanel_Open("dev/ui/Common/Item/KLUIBagTileScrollView/KLUIBagTileScrollViewItem", self.view.root, self,
- {
- itemList = SL:GetMetaValue("BAG_DATA")[1],
- id = EBagTileScrollViewId.Bag,
- forbidCount = SL:GetMetaValue("BAG_FORBID_COUNT") - forbidNum,
- hor = self.maxHor,
- vet = self.maxVet,
- forbidClickCallback = self.forbidClick,
- dragEndCallback = self.dragEnd,
- JumpSelectId = self.JumpSelectId,
- parent = self
- },true,function(bagTileScrollView)
- self.bagTileScrollView = bagTileScrollView
- self.bagTileScrollView:ResetPos()
- self.bagTileScrollView:RefreshInfo()
- if needLockRow and needLockRow > 0 then
- self.bagTileScrollView:RefreshRedGrid(needLockRow * self.maxVet)
- end
- end)
-
- EquipFunc:ReplaceEquipBagButton({self.view.person_shop_btn,self.view.storage_btn,self.view.recycle_btn,self.view.tidy_btn})
- end
- ---初始化数据
- function KLUIBagPanel:InitData(data)
- self.x = (data and tonumber(data.x)) or 0
- self.y = (data and tonumber(data.y)) or 0
- self.bagType = (data and data.bagType) or EBagShowType.Bag
- end
- function KLUIBagPanel:Show(...)
- SL.HideMainPanel()
- if self.bagType == EBagShowType.Bag and not GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- GUI:UIPanel_Open("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel", nil, nil, { x = -399, y = 0, relatePanel = self.filePath })
- end
- end
- -- 引导模块高亮特定道具
- function this:GuideToShowItem(cfgId)
- if self.bagType == EBagShowType.Bag then
- self.bagTileScrollView:SelectItem(cfgId)
- end
- end
- ---创建或者刷新界面数据时调用
- function KLUIBagPanel:Refresh()
- local x = self.x
- local y = self.y
- GUI:setPosition(self.view.root, x, y)
- if self.args and self.args.JumpType then
- ---跳转用
- if self.args.JumpType == 1 then
- self:recycle_btn()
- end
- end
- end
- ---注册UI事件和服务器消息
- function KLUIBagPanel: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)
- SL:RegisterLUAEvent(LUA_EVENT_BAG_SORT, self.LUA_EVENT_BAG_SORT, self)
- SL:RegisterLUAEvent(LUA_EVENT_PLAYER_EQUIP_CHANGE, self.LUA_EVENT_PLAYER_EQUIP_CHANGE, self)
- end
- function this:LUA_EVENT_PLAYER_EQUIP_CHANGE()
- self.bagTileScrollView:RefreshInfo()
- end
- function this:person_shop_btn()
- if self.bagType == EBagShowType.NPCShop then
- SL:MessageTip({id=502})
- return
- end
- if PrivilegeCardManager.iswithStore() then
- self:OpenShop()
- else
- SL:CommonTipsMessage({ stringTblID = 226, ui = self, sureBtnText = "随身买药", cancelBtnText = "传送", cancelCallBack = self.TransferToNpcShop,
- callback = self.OpenFirsh, littleTipsTextTable = { text = "<color='#FFFF00'>激活白银特权卡</color>", 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()
- SL:ReqTidyItemMessage()
- end
- -- 背包格子解锁回包
- function this:LUA_EVENT_BAG_UNLOCK(_, count)
- count = count - PrivilegeCardManager.GetBagSiftLockGridNum()
- if count < 0 then
- count = 0
- end
- self.bagTileScrollView:RefreshForbidGrid(count)
- end
- -- 整理完成回包
- function this:LUA_EVENT_BAG_SORT()
- self.bagTileScrollView:ClearBagItem()
- self.bagTileScrollView:RefreshItemByItem(SL:GetMetaValue("BAG_DATA")[1])
- self.bagTileScrollView:RefreshInfo()
- end
- -- 仓库按钮
- function this:storage_btn()
- if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- return
- end
- if self.bagType == EBagShowType.NPCShop then
- SL:MessageTip({id=502})
- return
- end
- if PrivilegeCardManager.iswithWarehouse() then
- self:OpenStorage()
- else
- SL:CommonTipsMessage({ stringTblID = 227, ui = self, sureBtnText = "随身仓库", cancelBtnText = "传送", cancelCallBack = self.TransferToNpcStorage,
- callback = self.OpenFirsh, littleTipsTextTable = { text = "<color='#FFFF00'>激活钻石特权卡</color>", 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:OpenStorage()
- GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
- GUI:UIPanel_Open("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel", nil, nil, { x = -415, y = 0 })
- end
- -- 商城打开
- function this:OpenShop()
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
- if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
- end
- local shop_id = SL:GetMetaValue("GET_NPC_SHOPID", 100101)
- SL:OpenNPCShop(shop_id)
- end
- function this:OpenFirsh()
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
- if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
- end
- GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel", nil, nil, { 2 })
- end
- function this:recycle_btn()
- if self.bagType == EBagShowType.NPCShop then
- SL:MessageTip({id=502})
- return
- end
- GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
- GUI:UIPanel_Open("dev/ui/Recover/Panel/KLRecover/KLRecoverPanel")
- end
- function this:closeBtn()
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
- if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
- end
- SL.ShowMainPanel()
- end
- function KLUIBagPanel:Close()
- GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipUI/KLEquipUIPanel")
- if GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel") then
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
- end
- if GUI:GetUI("dev/ui/NPC/Panel/KLNPCShop/KLNPCShopPanel") then
- GUI:UIPanel_Close("dev/ui/NPC/Panel/KLNPCShop/KLNPCShopPanel")
- end
- GUI:UIPanel_Close("dev/outui/NPC/Panel/KLSpecialNPCShop/KLSpecialNPCShopPanel")
- end
- function this:Hide()
- self: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])
- SL:CommonTipsMessage({ stringTblID = 207,
- ui = self, cfgId = itemId, needCount = needCount, callback = self.UnlockGrid, callbackData = nil })
- end
- function this:UnlockGrid()
- SL:ReqBagAddCapacityMessage(1)
- end
- -- 拖拽结束
- function this:dragEnd(eventData)
- local bagHor = eventData.bagPutHor
- local bagVet = eventData.bagPutVet
- local raycastObj = eventData.raycastObj
- local dragItem = eventData.dragItem
- local storageHor = eventData.storageHor
- local storageVet = eventData.storageVet
- -- 丢弃道具
- if raycastObj == nil then
- local canDrop = self:GetItemCanDrop(dragItem)
- if canDrop then
- local article = SL:GetConfig('cfg_item', dragItem.item.cfgId).article
- local name = SL:GetConfig('cfg_item', dragItem.item.cfgId).name
- local isDestroy = table.contains(article, 3)
- if isDestroy then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLUICommonTips/KLUICommonTipsPanel", nil, nil, { showTips = string.format("是否摧毁%s", name), callback = self.DropItem, callbackData = { item = dragItem.item }, ui = self })
- else
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLUICommonTips/KLUICommonTipsPanel", nil, nil, { showTips = string.format("是否丢弃%s", name), callback = self.DropItem, callbackData = { item = dragItem.item }, ui = self })
- end
- else
- SL:TipMessage(SL:GetConfig('cfg_string', 288).text, 1, NoticeType.NoticeMid)--"该道具不可被丢弃",
- end
- return
- end
- if bagHor <= self.maxHor and bagHor > 0 and bagVet <= self.maxVet and bagVet > 0 then
- ---@type CommonProtos.Item
- --local dragItem = eventData.dragItem
- local oldIndex = eventData.index
- local newIndex = SL.Bag:GetIndexWithPageHorAndVet(1, bagHor, bagVet)
- SL:ReqSwapItemMessage(newIndex, 10000 + oldIndex)
- else
- local storage_info = string.split(SL:GetConfig("cfg_global", 7).value, '#')
- local maxHor = tonumber(storage_info[1])
- local maxVet = tonumber(storage_info[2])
- if storageHor and storageHor <= maxHor and storageHor > 0 and storageVet <= maxVet and storageVet > 0 then
- local oldIndex = eventData.index
- local panel = GUI:GetUI("dev/ui/Bag/Panel/KLDepots/KLDepotsPanel")
- if panel.bagType == "privilege" then
- local newIndex = SL.StoreHouse:GetIndexWithPageHorAndVet(panel.CurPage + panel.maxDepotsPages, storageHor, storageVet)
- SL:ReqBagToStoreMessage(10000 + oldIndex, newIndex)
- elseif panel.bagType == "depots" then
- local newIndex = SL.StoreHouse:GetIndexWithPageHorAndVet(panel.CurPage, storageHor, storageVet)
- SL:ReqBagToStoreMessage(10000 + oldIndex, newIndex)
- end
- end
- end
- end
- function this.DropItem(callbackData)
- local item = callbackData.callbackData.item
- local index = SL:MeData_GetIndexBaseOnItemId(item.id)
- if index then
- SL:ReqGiveUpItemMessage(index)
- end
- end
- function this:BagInfo_Change(_, eventData)
- local ksItemList = self.bagTileScrollView:Item_Change(eventData)
- for _, ksItem in pairs(ksItemList) do
- ksItem:RefreshInfo()
- end
- end
- ---@param item KLBagItemItem
- function this:GetItemCanDrop(item)
- local article = SL:GetConfig('cfg_item', item.item.cfgId).article
- local cantDrop = table.contains(article, 2)
- if cantDrop then
- return false
- end
- return not item.item.bind
- 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")
- end
- function this:checkTigg()
- SL:ScheduleOnce(0.2, function()
- local uid = SL:GetMetaValue(EMetaVarGetKey.UID)
- local me = SL:GetRoleById(uid)
- SL:CellTrigger(SL:GetMetaValue(EMetaVarGetKey.MAP_ID), SL:MeData_GetCoord().x, SL:MeData_GetCoord().z, me)
- end)
- 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")
- end
- return KLUIBagPanel
|