123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- ---@class KLRecoverBagPanel:UIKmlLuaPanelBase
- ---@field view KLRecoverBagPanelView
- local KLRecoverBagPanel = class(UIKmlLuaPanelBase)
- local this = KLRecoverBagPanel
- ---创建时调用一次
- function this:Init()
- self:InitData(self.args)
- local bag_info = string.split(SL:GetConfig("cfg_global", 6).value, '#')
- self.maxHor = tonumber(bag_info[1])
- self.maxVet = tonumber(bag_info[2])
- self.cfgNameStr = "cfg_recovery"
- EquipFunc:ReplaceEquipBagButton({self.view.person_shop_btn,self.view.storage_btn,self.view.recycle_btn,self.view.tidy_btn})
- if self.args and self.args.cfgNameStr then
- self.cfgNameStr = self.args.cfgNameStr
- end
-
- local x = self.x
- local y = self.y
- GUI:setPosition(self.view.root, x, y)
- if not self.args or not self.args.itemList then
- self.args.itemList = SL:GetCanRecycleItemList(self.cfgNameStr)
- end
- self.itemList = {}
- table.copyFrom(self.itemList, self.args.itemList)
- --local itemList = BagCellUtil.SortItemList(self.itemList)
- local itemList = SL.Bag:SortItemList(self.itemList)
-
- GUI:UIPanel_Open("dev/ui/Common/Item/KLUIBagTileScrollView/KLUIBagTileScrollViewItem", self.view.root, self,
- {--itemList= self:SortItemList(SL:GetCanRecycleItemList(self.cfgNameStr)) ,
- isShowEffect = true,
- --forbidCount = SL:GetMetaValue("BAG_FORBID_COUNT"),
- id = EBagTileScrollViewId.Recover,
- hor = tonumber(bag_info[1]),
- vet = tonumber(bag_info[2]),
- canDrag = false,
- itemClick = (self.args and self.args.itemClickCallBack),
- selectList = self.args and self.args.selectList,
- callBackUI = self.args and self.args.callBackUI },true,
- function(bagTileScrollView)
- ---@type KLUIBagTileScrollViewItem
- self.bagTileScrollView = bagTileScrollView
- bagTileScrollView:ClearBagItem()
- bagTileScrollView:RefreshItemByItem(itemList)
- end)
-
- end
- ---初始化数据
- function this:InitData(data)
- self.x = (data and data.x) or 0
- self.y = (data and data.y) or 0
- self.bagType = (data and data.bagType) or EBagShowType.Recycle
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
-
- self.bagType = (self.args and self.args.bagType) or EBagShowType.Recycle
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.closeBtn, self, self.closeBtn)
- GUI:AddOnClickEvent(self.view.person_shop_btn, self, self.personBtn)
- GUI:AddOnClickEvent(self.view.storage_btn, self, self.personBtn)
- GUI:AddOnClickEvent(self.view.recycle_btn, self, self.personBtn)
- GUI:AddOnClickEvent(self.view.tidy_btn, self, self.personBtn)
- SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER, self.BagInfo_Change, self)
- SL:RegisterLUAEvent(LUA_EVENT_BAG_UNLOCK, self.LUA_EVENT_BAG_UNLOCK, self)
- SL:RegisterLUAEvent(Event.RecoverSelectChange, self.RecoverSelectChange, self)
- SL:RegisterLUAEvent(LUA_EVENT_BAG_SORT, self.LUA_EVENT_BAG_SORT, self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_ITEM_DECOMPOSITION, self.Decompose_Change, self)
- end
- function this:personBtn()
- SL:MessageTip({id=502})
- end
- function this:LUA_EVENT_BAG_UNLOCK(_, count)
- self.bagTileScrollView:RefreshForbidGrid(count)
- end
- ---@param data table<number,boolean>
- function this:RecoverSelectChange(id, data)
- self.bagTileScrollView:RefreshSelect(data)
- end
- function this:closeBtn()
- GUI:UIPanel_Close("dev/ui/Bag/Panel/KLRecoverBag/KLRecoverBagPanel")
- GUI:UIPanel_Close("dev/ui/Recover/Panel/KLRecover/KLRecoverPanel")
- GUI:UIPanel_Close("dev/ui/Equip/Panel/KLEquipDecomposeUI/KLEquipDecomposeUIPanel")
- GUI:UIPanel_Close("dev/ui/UIForgeGroup/Panel/KLUIForgeGroup/KLUIForgeGroupPanel")
- end
- function this:Close()
- end
- function this:UnlockGrid()
- end
- function this:dragEnd(eventData)
- end
- ---@param eventData {index:number,item:CommonProtos.Item}[]
- function this:BagInfo_Change(eventId, eventData)
- --self.isChangeBag = true
- --self.isChange = false
- -----做个筛选,不符合回收的筛选掉
- --for i, v in pairs(eventData) do
- -- if v.item ~= nil then
- -- if SL:HasConfig("cfg_item", v.item.cfgId) then
- -- if self.bagType == EBagShowType.Recycle then
- -- if SL:HasConfig(self.cfgNameStr, SL:GetConfig("cfg_item", v.item.cfgId).recoveryGroup) then
- -- self.itemList[SL:MeData_GetIndexBaseOnItemId(v.item.id) - 10000] = v.item
- -- self.isChange = true
- -- elseif self.bagType == EBagShowType.Decompose then
- -- if SL:HasConfig(self.cfgNameStr, SL:GetConfig("cfg_item", v.item.cfgId).decomposeGroup) then
- -- self.itemList[SL:MeData_GetIndexBaseOnItemId(v.item.id) - 10000] = v.item
- -- self.isChange = true
- -- end
- -- end
- -- end
- -- end
- -- end
- -- self:DelItem(v)
- --end
- local refreshItemCallback = nil
- local refreshItemCallbackUI = nil
- if self.bagType == EBagShowType.Recycle then
- refreshItemCallback = self.args.callBackUI.RefreshSelect
- refreshItemCallbackUI = self.args.callBackUI
- --self.args.callBackUI:RefreshSelect()
- elseif self.bagType == EBagShowType.Decompose then
- refreshItemCallback = self.args.callBackUI.ShowGetItemListBySelect
- refreshItemCallbackUI = self.args.callBackUI
- end
-
- local itemList = SL.Bag:SortItemList(self.itemList)
- self.bagTileScrollView:ClearBagItem()
- self.bagTileScrollView:RefreshItemByItem(itemList,refreshItemCallback,refreshItemCallbackUI)
- end
- ---@param eventData {index:number,item:CommonProtos.Item}[]
- function this:BagInfo_Change(eventId, eventData)
- self.isChangeBag = true
- self.isChange = false
- ---做个筛选,不符合回收的筛选掉
- for i, v in pairs(eventData) do
- if v.item ~= nil then
- if SL:HasConfig("cfg_item", v.item.cfgId) then
- if self.bagType == EBagShowType.Recycle then
- if SL:HasConfig(self.cfgNameStr, SL:GetConfig("cfg_item", v.item.cfgId).recoveryGroup) then
- self.itemList[SL:MeData_GetIndexBaseOnItemId(v.item.id) - 10000] = v.item
- self.isChange = true
- elseif self.bagType == EBagShowType.Decompose then
- --if SL:HasConfig(self.cfgNameStr, SL:GetConfig("cfg_item", v.item.cfgId).decomposeGroup) then
- -- self.itemList[SL:MeData_GetIndexBaseOnItemId(v.item.id) - 10000] = v.item
- -- self.isChange = true
- --end
- end
- end
- end
- end
- self:DelItem(v)
- end
- local refreshItemCallback = nil
- local refreshItemCallbackUI = nil
- if self.bagType == EBagShowType.Recycle then
- refreshItemCallback = self.args.callBackUI.RefreshSelect
- refreshItemCallbackUI = self.args.callBackUI
- --self.args.callBackUI:RefreshSelect()
- elseif self.bagType == EBagShowType.Decompose then
- refreshItemCallback = self.args.callBackUI.ShowGetItemListBySelect
- refreshItemCallbackUI = self.args.callBackUI
- --self.args.callBackUI:ShowGetItemListBySelect()
- end
-
- if self.isChange then
- --local itemList = BagCellUtil.SortItemList(self.itemList)
- local itemList = SL.Bag:SortItemList(self.itemList)
- self.bagTileScrollView:ClearBagItem()
- self.bagTileScrollView:RefreshItemByItem(itemList,refreshItemCallback,refreshItemCallbackUI)
- end
- self.isChangeBag = false
- end
- function this:Decompose_Change()
- local refreshItemCallback = self.args.callBackUI.ShowGetItemListBySelect
- local refreshItemCallbackUI = self.args.callBackUI
-
- self.itemList = SL:GetPlayerDecomposeItemList()
- local itemList = SL.Bag:SortItemList(self.itemList)
- self.bagTileScrollView:ClearBagItem()
- self.bagTileScrollView:RefreshItemByItem(itemList,refreshItemCallback,refreshItemCallbackUI)
- end
- ---删除物品
- ---@param data {index:number,item:CommonProtos.Item}
- function this:DelItem(data)
- local delItem = nil
- for z, a in pairs(self.itemList) do
- if data.index == z + 10000 then
- if data.item then
- if data.item.id ~= a.id then
- delItem = a
- break
- end
- else
- delItem = a
- break
- end
- end
- end
- if delItem then
- table.removeByKeyValue(self.itemList, delItem)
- self.isChange = true
- 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
- function this:LUA_EVENT_BAG_SORT(_, eventData)
- if self.isChangeBag then
- return
- end
- if self.bagType == EBagShowType.Recycle then
- self.itemList = SL:GetCanRecycleItemList(self.cfgNameStr)
- elseif self.bagType == EBagShowType.Decompose then
- self.itemList = SL:GetPlayerDecomposeItemList()
- end
- --local itemList = BagCellUtil.SortItemList(self.itemList)
- local itemList = SL.Bag:SortItemList(self.itemList)
- self.bagTileScrollView:ClearBagItem()
- self.bagTileScrollView:RefreshItemByItem(itemList)
- end
- return this
|