123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- ---@class KLRecoverDetailedSettingsPanel:UIKmlLuaPanelBase
- ---@field view KLRecoverDetailedSettingsPanelView
- ---@field typeList cfg_recovery_column[]
- ---@field goodsItem table<KingML.KmlControl,KLRecycleIncomeItemItem>
- ---@field getList table<number,{count:number,cfgId:number}>
- 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
|