---@class KLRecoverDetailedSettingsPanel:UIKmlLuaPanelBase ---@field view KLRecoverDetailedSettingsPanelView ---@field typeList cfg_recovery_column[] ---@field goodsItem table ---@field getList table local KLRecoverDetailedSettingsPanel = class(UIKmlLuaPanelBase) local this = KLRecoverDetailedSettingsPanel ---创建时调用一次 function this:Init() end function this:RefreshData(data) self.data = data ---回收所得列表 self.getList = {} ---回收所得道具展示 self.goodsItem = {} ---回收类型列表 self.typeList = {} self.selectItemList = {} self.typeList = self.data.typeList self.jishu_list = {} self.citiao_list = {} self.zhiye_list = {} for i, v in ipairs(self.typeList) do if v.type == 1 then table.insert(self.jishu_list, v) elseif v.type == 2 then table.insert(self.citiao_list, v) elseif v.type == 3 then table.insert(self.zhiye_list, v) end end self.recover_all_item = {} ---阶数列表 for k, v in ipairs(self.jishu_list) do local id = v.id ---@type KLRecoverTypeItem local homeTab = GUI:UIPanel_Open("dev/ui/Recover/Item/KLRecoverType/KLRecoverTypeItem", self.view.jieshu_content, self, v, true, function(homeTab) GUI:SetToggleOnValueChange(homeTab.view.KmlRecycleTypeItemTemplate, self, self.ToggleChange, v.id) end) self.recover_all_item[tostring(id)] = homeTab end if #self.jishu_list > 0 then GUI:setVisible(self.view.jieshu_title, true) else GUI:setVisible(self.view.jieshu_title, false) end --词条数列表 for k, v in ipairs(self.citiao_list) do local id = v.id ---@type KLRecoverTypeItem local homeTab = GUI:UIPanel_Open("dev/ui/Recover/Item/KLRecoverType/KLRecoverTypeItem", self.view.citiaoshu_content, self, v, true, function(homeTab) GUI:SetToggleOnValueChange(homeTab.view.KmlRecycleTypeItemTemplate, self, self.ToggleChange, v.id) end) self.recover_all_item[tostring(id)] = homeTab end if #self.citiao_list > 0 then GUI:setVisible(self.view.citiaoshu_title, true) else GUI:setVisible(self.view.citiaoshu_title, false) end --职业列表 for k, v in ipairs(self.zhiye_list) do local id = v.id ---@type KLRecoverTypeItem local homeTab = GUI:UIPanel_Open("dev/ui/Recover/Item/KLRecoverType/KLRecoverTypeItem", self.view.zhiye_content, self, v, true, function(homeTab) GUI:SetOnPrefabControlLoaded(homeTab.view.prefab_11, function() GUI:SetToggleOnValueChange(homeTab.view.KmlRecycleTypeItemTemplate, self, self.ToggleChange, v.id) end) end) self.recover_all_item[tostring(id)] = homeTab end if #self.zhiye_list > 0 then GUI:setVisible(self.view.zhiye_title, true) else GUI:setVisible(self.view.zhiye_title, false) end SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_RECYCLING_TYPE) -- SL:ScheduleOnce(1, function() -- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_RECYCLING_TYPE) -- end) end ---创建或者刷新界面数据时调用 function this:Refresh() SL.HideMainPanel() end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.closeBtn, self, self.BtnCloseOnClick) SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_RECYCLING_TYPE, self.RES_GET_RECYCLING_TYPE, self) end function this:UnRegistEvents() SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_RECYCLING_TYPE, self.RES_GET_RECYCLING_TYPE, self) end function this:Close() self:UnRegistEvents() end function this:Recycle() -- if not self.recover_all_item then -- return -- end -- for _, v in pairs(self.recover_all_item) do -- GUI:UIPanel_Close(nil, v) -- end -- table.clear(self.recover_all_item) end ---关闭页面 function this:BtnCloseOnClick() GUI:UIPanel_Close("dev/ui/Recover/Panel/KLRecoverDetailedSettings/KLRecoverDetailedSettingsPanel") end function this:GetRecoverTypeSet() return false end -- 返回回收类型 function this:RES_GET_RECYCLING_TYPE(_id, message) -- SL:LogTable(message,true) if message then self.recover_data = message else self.recover_data = {} end local one_list = self.recover_data[tostring(self.data.id)] if not one_list or not one_list["1"] then for k, v in pairs(self.recover_all_item) do GUI:SetOnPrefabControlLoaded(v.view.prefab_11, function() GUI:Toggle_setIsOn(v.view.KmlRecycleTypeItemTemplate, false) end) end return end local all_true = {} if one_list then for i = 1, 100, 1 do local key = tostring(i) if not one_list[key] then break end local id_str = tostring(one_list[key]) if self.recover_all_item[id_str] and self.recover_all_item[id_str].view then GUI:SetOnPrefabControlLoaded(self.recover_all_item[id_str].view.prefab_11, function() GUI:Toggle_setIsOn(self.recover_all_item[id_str].view.KmlRecycleTypeItemTemplate, true) end) table.insert(all_true, id_str) end end end for k, v in pairs(self.recover_all_item) do if table.contains(all_true, k) then else GUI:Toggle_setIsOn(v.view.KmlRecycleTypeItemTemplate, false) end end end function this:contain_bg_value(tab, value) for k, v in pairs(tab) do if v == value then return true end end return false end function this:get_remove_value(tab, value) local all_list = {} local index = 1 for k, v in pairs(tab) do if v ~= value then all_list[tostring(index)] = v index = index + 1 end end return all_list end function this:get_add_value(tab, value) local all_list = {} local index = 1 for k = 1, 100, 1 do if tab[tostring(k)] then index = k all_list[tostring(index)] = tab[tostring(k)] else break end end all_list[tostring(index + 1)] = value return all_list end ---勾选类型变更 二级页签 ---@param customData number @cfg_recovery表id function this:ToggleChange(_, customData, eventData) if not self.recover_data then return end if not self.data then return end --self.data local current_id = tostring(self.data.id) if eventData[1] then if not self.recover_data[current_id] then local one_data = {} one_data["1"] = customData self.recover_data[current_id] = one_data else if self:contain_bg_value(self.recover_data[current_id], customData) then return else self.recover_data[current_id] = self:get_add_value(self.recover_data[current_id], customData) end end else if not self.recover_data[current_id] then return end if self:contain_bg_value(self.recover_data[current_id], customData) then local target_list = self:get_remove_value(self.recover_data[current_id], customData) if target_list["1"] then self.recover_data[current_id] = target_list else self.recover_data[current_id] = nil end else return end end SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SETTING_RECYCLING_TYPE, self.recover_data) end return this