---@class KLShapeShiftCardShopPanel:UIKmlLuaPanelBase ---@field view KLShapeShiftCardShopPanelView local KLShapeShiftCardShopPanel = class(UIKmlLuaPanelBase) local this = KLShapeShiftCardShopPanel function this:AsyncLoadUI() end ---创建时调用一次 function this:Init() GUI:DataListInitData(self.view.datalist_currency, function() return self:CurrentCountFunc() end, nil, nil, function(realIndex, kmlcontrol) return self:CurrentUpdateFunc(realIndex, kmlcontrol) end) GUI:DataListInitData(self.view.card_datalist_1, function() return self:Item_1CountFunc() end, function(realIndex) return self:Item_1GetFunc(realIndex) end, nil, function(realIndex, kmlCtrl) return self:Item_1UpdateFunc(realIndex, kmlCtrl) end) GUI:DataListInitData(self.view.card_datalist_2, function() return self:Item_2CountFunc() end, function(realIndex) return self:Item_2GetFunc(realIndex) end, nil, function(realIndex, kmlCtrl) return self:Item_2UpdateFunc(realIndex, kmlCtrl) end) self.Items_1 = {} self.Items_2 = {} end function this:CurrentCountFunc() return #self.currencyList end function this:CurrentUpdateFunc(realIndex) local data = self.currencyList[realIndex + 1] local item_tokens = GUI:GetChildControl(self.view.datalist_currency, realIndex, "item_tokens") local text_tokens_num = GUI:GetChildControl(self.view.datalist_currency, realIndex, "text_tokens_num") local btn_tokens_add = GUI:GetChildControl(self.view.datalist_currency, realIndex, "btn_tokens_add") GUI:Item_setItemId(item_tokens, data) local count = SL:GetBagItemCount(data) self.currencyCount[data] = count GUI:Text_setString(text_tokens_num, tostring(count)) GUI:AddOnClickEvent(item_tokens, self, self.BtnTipsOnClick, data) GUI:AddOnClickEvent(btn_tokens_add, self, self.BtnAddOnClick, data) end function this:Item_1CountFunc() return #self.allShopItemTbl[self.allTypeTbl[1]] end function this:Item_1GetFunc() local item = GUI:UIPanel_Open("dev/outui/ShapeShiftCard/Item/KLShapeShiftCardShop/KLShapeShiftCardShopItem", self.view.card_datalist_1, self, nil, true) local kmlCtrl = item.view.root self.Items_1[kmlCtrl] = item return kmlCtrl end ---@param kmlCtrl KingML.KmlControl function this:Item_1UpdateFunc(realIndex, kmlCtrl) local item = self.Items_1[kmlCtrl] local info = self.allShopItemTbl[self.allTypeTbl[1]][realIndex + 1] item:RefreshUI(info) end function this:Item_2CountFunc() return #self.allShopItemTbl[self.allTypeTbl[2]] end function this:Item_2GetFunc() local item = GUI:UIPanel_Open("dev/outui/ShapeShiftCard/Item/KLShapeShiftCardShop/KLShapeShiftCardShopItem", self.view.card_datalist_2, self, nil, true) local kmlCtrl = item.view.root self.Items_2[kmlCtrl] = item return kmlCtrl end ---@param kmlCtrl KingML.KmlControl function this:Item_2UpdateFunc(realIndex, kmlCtrl) local item = self.Items_2[kmlCtrl] local info = self.allShopItemTbl[self.allTypeTbl[2]][realIndex + 1] item:RefreshUI(info) end function this:BtnAddOnClick(_, cfgid) SL:CommonItemGetPath(nil, cfgid, nil, nil, self) end ---注册UI事件和服务器消息 function this:RegistEvents() SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER, self.LUA_EVENT_BAG_CHANGE_AFTER, self) end ---界面显示时调用一次 function this:Show() end ---创建或者刷新界面数据时调用 function this:Refresh() ---@type cfg_card_shop_column[] local cfg_card_shop = SL:GetConfigTable("cfg_card_shop") self.allShopItemTbl = {} self.allTypeTbl = {} for _, v in pairs(cfg_card_shop) do if not self.allShopItemTbl[v.type] then self.allShopItemTbl[v.type] = {} self.allTypeTbl[#self.allTypeTbl + 1] = v.type end self.allShopItemTbl[v.type][#self.allShopItemTbl[v.type] + 1] = v end GUI:DataListUpdateData(self.view.card_datalist_1) GUI:DataListUpdateData(self.view.card_datalist_2) self.currencyList = {} self.currencyCount = {} local currencyList = string.split(SL:GetConfig("cfg_global", 18001).value, '#') for _, v in ipairs(currencyList) do self.currencyList[#self.currencyList + 1] = tonumber(v) end GUI:DataListUpdateData(self.view.datalist_currency) end function this:BtnTipsOnClick(_, eventData) SL:OpenTips(nil, eventData) end ---实时刷新道具 function this:LUA_EVENT_BAG_CHANGE_AFTER() local isRefresh = false for _, v in pairs(self.currencyList) do if SL:GetBagItemCount(v) ~= self.currencyCount[v] then isRefresh = true break end end if isRefresh then ---刷新商城红点 GUI:DataListUpdateData(self.view.datalist_currency) GUI:DataListUpdateData(self.view.card_datalist_1) GUI:DataListUpdateData(self.view.card_datalist_2) ---@type KLShapeShiftCardMainPanel local ui = GUI:GetUI("dev/outui/ShapeShiftCard/Panel/KLShapeShiftCardMain/KLShapeShiftCardMainPanel") if ui then ui:RefreshMainRedPoint() end end end function this:Close() self.Items_1 = nil self.Items_2 = nil self.allTypeTbl = nil self.allShopItemTbl = nil self.currencyList = nil self.currencyCount = nil end return this