---@class KLOpenServerPanel:UIKmlLuaPanelBase ---@field view KLOpenServerPanelView local KLOpenServerPanel = class(UIKmlLuaPanelBase) local this = KLOpenServerPanel ---创建时调用一次 function this:Init() self.Info = {} self.bossInfos = {} self.strengtInfos = {} self.rewardInfo = {} self.athleticsInfos = {} self.rewardbotInfo = {} self.equipDropInfos = {} self.personalRewardItem = {} --追加强化个人奖励 self.athleticsRewardItem = {} --竞技排行个人奖励 ---页签 GUI:DataListInitData(self.view.datalist1, function() return self:DataListItemCountFunc() end, function(realIndex) return self:DataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:DataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:DataListItemUpdateFunc(realIndex, kmlcontrol) end) ---首杀 GUI:DataListInitData(self.view.datalist34, function() return self:BossKillItemCountFunc() end, function(realIndex) return self:BossKillItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:BossKillItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:BossKillItemUpdateFunc(realIndex, kmlcontrol) end) ---追加强化 GUI:DataListInitData(self.view.datalist83, function() return self:StrengtItemCountFunc() end, function(realIndex) return self:StrengtItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:StrengtItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:StrengtItemUpdateFunc(realIndex, kmlcontrol) end) ---追加强化个人奖励 GUI:DataListInitData(self.view.datalist92, function() return table.count(self.rewardInfo) end, function(realIndex) return self:PersonalItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:PersonalItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:PersonalItemUpdateFunc(realIndex, kmlcontrol) end) ---竞技排行 GUI:DataListInitData(self.view.datalistMid, function() return self:AthleticsItemCountFunc() end, function(realIndex) return self:AthleticsItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:AthleticsItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:AthleticsItemUpdateFunc(realIndex, kmlcontrol) end) ---竞技排行个人奖励 GUI:DataListInitData(self.view.datalistbot, function() return table.count(self.rewardbotInfo) end, function(realIndex) return self:AthleticsPersonalItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:AthleticsPersonalItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:AthleticsPersonalItemUpdateFunc(realIndex, kmlcontrol) end) ---装备首曝 GUI:DataListInitData(self.view.datalist54, function() return self:EquipDropItemCountFunc() end, function(realIndex) return self:EquipDropItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:EquipDropItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:EquipDropItemUpdateFunc(realIndex, kmlcontrol) end) end ---竞技排行个人奖励 function this:AthleticsPersonalItemGetFunc(realIndex) local data = self.rewardbotInfo[realIndex + 1] local item = GUI:Item_Create(self.view.datalistbot,{ width = "55", height = "55", itemid = data[1], mfixsize = "55,55", tips = "1", itemcustomcount = SL:GetSimpleNumber(data[2],0), }) GUI:AddOnClickEvent(item,self,function() SL:OpenTips(nil, data[1]) end) self.athleticsRewardItem[item.kmlControl] = item return item end function this:AthleticsPersonalItemInitFunc(realIndex, kmlcontrol) end function this:AthleticsPersonalItemUpdateFunc(realIndex, kmlcontrol) local data = self.rewardbotInfo[realIndex + 1] local item = self.athleticsRewardItem[kmlcontrol] local count = ""..SL:GetSimpleNumber(tonumber(data[2]),0).."" GUI:Item_UpdataData(item, { itemid = data[1], itemcustomcount = count, }) GUI:AddOnClickEvent(item, self, function() SL:OpenTips(nil, data[1]) end) end ---追加强化个人奖励 function this:PersonalItemGetFunc(realIndex) local data = self.rewardInfo[realIndex + 1] local item = GUI:Item_Create(self.view.datalist92,{ width = "55", height = "55", itemid = data[1], mfixsize = "55,55", tips = "1", itemcustomcount = SL:GetSimpleNumber(data[2],0), }) GUI:AddOnClickEvent(item,self,function() SL:OpenTips(nil, data[1]) end) self.personalRewardItem[item.kmlControl] = item return item end function this:PersonalItemInitFunc(realIndex, kmlcontrol) end function this:PersonalItemUpdateFunc(realIndex, kmlcontrol) local data = self.rewardInfo[realIndex + 1] local item = self.personalRewardItem[kmlcontrol] local count = ""..SL:GetSimpleNumber(tonumber(data[2]),0).."" GUI:Item_UpdataData(item, { itemid = data[1], itemcustomcount = count, }) GUI:AddOnClickEvent(item, self, function() SL:OpenTips(nil, data[1]) end) end ---左侧页签添加 function this:DataListItemCountFunc() return table.count(self.Info) end function this:DataListItemGetFunc(realIndex) end function this:DataListItemInitFunc(realIndex, kmlcontrol) end function this:DataListItemUpdateFunc(realIndex, kmlcontrol) local idx = realIndex + 1 local data = self.Info[idx] local btn = self.view.datalist1:GetChildControl(realIndex, 'toggle') local red = self.view.datalist1:GetChildControl(realIndex, "red") local text3 = self.view.datalist1:GetChildControl(realIndex, "text3") GUI:SetActive(red, false) self.btn[realIndex] = btn GUI:AddOnClickEvent(self.btn[realIndex], self, function() self:LoadPanel(realIndex, data.id) end) GUI:Text_setString(text3, data.name) end ---判断活动开启条件 function this:CheckIsTabOpenData() local Info2 = {} --local cfg = SL:GetConfig("cfg_system_switch",216) local newareaTab = SL:GetConfigTable("cfg_newarea_ranking") for i, v in pairs(newareaTab) do local isLv = SL:CheckCalculateConditionGroup(v.condition) if isLv then local condition = "checkRunDay>" .. v.startTime[1] .. "&checkRunDay<" .. v.endTime[1] local lefttime = InfoManager.openServerInfo:GetLeftTimeByRankingId(v.id) --local isTime = SL:CheckCalculateConditionGroup(condition) if lefttime > 0 then table.insert(Info2, v) end end end return Info2 end ---创建或者刷新界面数据时调用 function this:Refresh() ---左侧页签 self.btn = {} self.Info = self:CheckIsTabOpenData() --SL:GetConfigTable("cfg_newarea_ranking") if table.count(self.Info) > 0 then SL.HideMainPanel() table.sort(self.Info, function(a, b) return a.sort < b.sort end) GUI:DataListUpdateData(self.view.datalist1) ---默认第一页签 self:LoadPanel(0, self.Info[1].id) end end function this:HideTabPanel() GUI:SetActive(self.view.BossKillPanel, false) GUI:SetActive(self.view.StrengthenPanel, false) GUI:SetActive(self.view.EquipDropPanel, false) GUI:SetActive(self.view.AthleticsPanel, false) end ---切换页签UI function this:LoadPanel(index, id) if self.selectid and self.selectid == index + 1 then return end self:HideTabPanel() self.selectid = index + 1 for i, v in pairs(self.btn) do if i == index then GUI:Button_loadTextureNormal(v, "one_button_select_bg", "Atlas/UITradePanel.spriteatlas") else GUI:Button_loadTextureNormal(v, "one_button_bg", "Atlas/UITradePanel.spriteatlas") end end self:SelectTabPanel(id) end function this:SelectTabPanel(id) self.ranking_id = id if id == EOpenServerType.BossKill or id == EOpenServerType.GoldBossKill then self:SetBossKillPanelData(id) SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_FIRST_KILL_INFO) if id == EOpenServerType.BossKill then GUI:Button_loadTextureNormal(self.view.img8, "bg_boss_kill", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas") else GUI:Button_loadTextureNormal(self.view.img8, "bg_huangjin_boss", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas") end GUI:SetActive(self.view.BossKillPanel, true) elseif id == EOpenServerType.StrengtPlacard or id == EOpenServerType.SupplementPlacard then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id) if id == EOpenServerType.StrengtPlacard then GUI:Button_loadTextureNormal(self.view.img5, "bg_strengthen", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas") else GUI:Button_loadTextureNormal(self.view.img5, "bg_zhuijia", "Atlas/KmlXWServerLaunchActivitiesUI.spriteatlas") end self:SetStrengtPanelData(id) GUI:SetActive(self.view.StrengthenPanel, true) elseif id == EOpenServerType.LevelAthletics or id == EOpenServerType.ExcellenceAthletics or id == EOpenServerType.JewelryAthletics then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id) if id == EOpenServerType.LevelAthletics then GUI:Button_loadTextureNormal(self.view.imgtip, "bg_level_athletics", "Atlas/TS_OpenServerPanel.spriteatlas") elseif id == EOpenServerType.ExcellenceAthletics then GUI:Button_loadTextureNormal(self.view.imgtip, "bg_excellence_athletics", "Atlas/TS_OpenServerPanel.spriteatlas") else GUI:Button_loadTextureNormal(self.view.imgtip, "bg_jewelry_athletics", "Atlas/TS_OpenServerPanel.spriteatlas") end self:SetAthleticsPanelData(id) GUI:SetActive(self.view.AthleticsPanel, true) else SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_TYPE_RANK_INFO, id) self:SetEquipDropPanelData(id) GUI:SetActive(self.view.EquipDropPanel, true) end local lefttime = InfoManager.openServerInfo:GetLeftTimeByRankingId(self.ranking_id) if lefttime > 0 then self.countdown = lefttime // 1000 self:SetActivityTimeSchedule() end end ---活动结束时间倒计时 function this:SetActivityTimeSchedule() self.sectimer = SL:Schedule(self.sectimer, 0, 1, self.countdown, function() self.countdown = self.countdown - 1 if self.countdown > 0 then GUI:Text_setString(self.view.countdown1, GUIUtil.FormatTimeDHM(self.countdown)) else GUI:Text_setString(self.view.countdown1, "00:00:00") local info = self:CheckIsTabOpenData() if table.count(info) > 0 then self:Refresh() else if self.sectimer then SL:UnSchedule(self.sectimer) self.sectimer = nil end SL:onLUAEvent(LUA_EVENT_HIDE_RIGHT_BTN_VIEW) self:CloseBtnClick() end end end) end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.CloseImg, self, self.CloseBtnClick) GUI:AddOnClickEvent(self.view.img2, self, self.SelectTabHelpPanel) ---帮助提示 GUI:AddOnClickEvent(self.view.img15, self, self.SelectTabHelpPanel) GUI:AddOnClickEvent(self.view.img20, self, self.SelectTabHelpPanel) GUI:AddOnClickEvent(self.view.btntip, self, self.SelectTabHelpPanel) GUI:AddOnClickEvent(self.view.button22, self, self.MyAthleticsRankGetBtnClick) ---竞技排行 GUI:AddOnClickEvent(self.view.button2, self, self.MyRankGetBtnClick) ---强化追加排行榜个人奖励领取 SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_TYPE_RANK_INFO, self.UpdateOPENRankInfo, self) ---排行信息 SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_REWARD_CHANGE, self.UpdateRankInfoCHANGE, self) ---排行 SL:RegisterLuaNetMsg(LuaMessageIdToClient.OPEN_SERVER_ACT_RANK_CHANGE, self.UpdateRankInfoCHANGE, self) ---排行 SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_OPEN_SERVER_FIRST_KILL_INFO, self.UpdateOpenDataSort, self) ---首杀信息 SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GLOBAL_FIRST_KILL_CHANGE, self.UpdateDataSort, self) ---全服首杀变化 SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PERSONAL_FIRST_KILL_CHANGE, self.UpdateDataSort, self)---个人首杀变化 end ---首杀刷新排序 function this:UpdateOpenDataSort(id, data) self:SetBossKillDataSort() GUI:DataListUpdateData(self.view.datalist34) end function this:UpdateDataSort(id, data) if data and table.count(data) > 0 then self:SetBossKillPanelData(tonumber(data.group)) self:SetBossKillDataSort() GUI:DataListUpdateData(self.view.datalist34) end end ---排行榜总 刷新 function this:UpdateOPENRankInfo(id, data) if data and data.rank_type then self:RefreshRankUI(data.rank_type) end end ---排行个人奖励/前三 领取刷新 function this:UpdateRankInfoCHANGE(id, data) if data and data.rankType then self:RefreshRankUI(data.rankType) end end function this:RefreshRankUI(rankType) if rankType == EOpenServerType.StrengtPlacard or rankType == EOpenServerType.SupplementPlacard then self:SetStrengtPanelDataSort() GUI:DataListUpdateData(self.view.datalist83) self:SetStrengtPanelText(rankType) ---排名/文本des/个人奖励 elseif rankType == EOpenServerType.LevelAthletics or rankType == EOpenServerType.ExcellenceAthletics or rankType == EOpenServerType.JewelryAthletics then self:SetAthleticsPanelText(rankType) ---重新获取数据 self:SetAthleticsInfoData(rankType) GUI:DataListUpdateData(self.view.datalistMid) else self:SetEquipPanelDataSort() GUI:DataListUpdateData(self.view.datalist54) end end ---强化/追加 function this:MyRankGetBtnClick(id, data) if self.personalrewardid then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_PERSONAL_REWARD, { goalValue = self.personalrewardid, rankType = self.ranking_id }) end end ---等级/..竞技 function this:MyAthleticsRankGetBtnClick(id, data) if self.athleticsrewardid then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_OPEN_SERVER_ACT_RANK_ALL_REWARD, { goalValue = self.athleticsrewardid, rankType = self.ranking_id }) end end ---各页签帮助提示 function this:SelectTabHelpPanel() if self.ranking_id == EOpenServerType.BossKill then SL:CommonStrTipsMessage({ title = "BOSS首杀", str = "1、开服第1天开启BOSS首杀活动,持续10天。\n2、活动期间,全服首次击杀指定BOSS的,其中伤害最高的玩家和致命一击的玩家可上榜,并获得巨额全服首杀奖励。\n3、活动期间,个人首次击杀指定BOSS也可以获得丰厚奖励。奖励领取次数有限,先到先得,不要错过!" }) elseif self.ranking_id == EOpenServerType.GoldBossKill then SL:CommonStrTipsMessage({ title = "黄金怪首杀", str = "1、开服第1天开启黄金怪首杀活动,持续10天。\n2、活动期间,全服首次击杀指定黄金怪的,其中伤害最高的玩家和致命一击的玩家可上榜,并获得巨额全服首杀奖励。\n3、活动期间,个人首次击杀指定黄金怪也可以获得丰厚奖励。奖励领取次数有限,先到先得,不要错过!" }) elseif self.ranking_id == EOpenServerType.StrengtPlacard then SL:CommonStrTipsMessage({ title = "强化冲榜", str = "1、开服第1天开启强化冲榜活动,持续10天。\n2、活动期间,全服前三位达到指定强化等级的玩家即可上榜,并获得巨额冲榜奖励。\n3、活动期间,个人首次到达指定强化等级,也可领取丰厚奖励。奖励领取次数有限,先到先得,不要错过!" }) elseif self.ranking_id == EOpenServerType.SupplementPlacard then SL:CommonStrTipsMessage({ title = "追加冲榜", str = "1、开服第1天开启追加冲榜活动,持续10天。\n2、活动期间,全服前三位达到指定追加等级的玩家即可上榜,并获得巨额冲榜奖励。\n3、活动期间,个人首次到达指定追加等级,也可领取丰厚奖励。奖励领取次数有限,先到先得,不要错过!" }) elseif self.ranking_id == EOpenServerType.EquipDropFirst then SL:CommonStrTipsMessage({ title = "装备首爆", str = "1、开服第1天开启装备首爆活动,持续10天。\n2、活动期间,玩家成功击杀BOSS首次拾取指定装备即可获得对应的丰厚奖励。\n3、全服指定装备首爆奖励领取次数有限,先到先得,不要错过!" }) elseif self.ranking_id == EOpenServerType.LevelAthletics then SL:CommonStrTipsMessage({ title = "等级竞技", str = "1、开服第1天开启等级竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" }) elseif self.ranking_id == EOpenServerType.ExcellenceAthletics then SL:CommonStrTipsMessage({ title = "卓越竞技", str = "1、开服第1天开启卓越竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" }) else SL:CommonStrTipsMessage({ title = "首饰竞技", str = "1、开服第1天开启首饰竞技活动,持续10天。\n2、活动期间,达成指定等级获得个人奖励,等级全服上榜时获得额外奖励。" }) end end ---关闭 function this:CloseBtnClick() GUI:UIPanel_Close("dev/outui/ServerActivity/Panel/KLOpenServer/KLOpenServerPanel") SL.ShowMainPanel() end ------------------------------------------首杀界面数据--------------------------------------------------------- function this:SetBossKillPanelData(ranking_id) self.bossInfos = {} --根据BOSS挑战组编号bossGroup读取怪物信息和奖励信息 local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id) local boss_config_list = SL:FindConfigs("cfg_newarea_rankingboss", "group", cfg[1].bossGroup) for i, v in pairs(boss_config_list) do local bossdata = SL:FindConfigs("cfg_monster", "id", v.rankingBoss[1]) local data_boss = {} data_boss.config_index = v.index data_boss.boss_group = v.group data_boss.cond_count = v.personalcondition data_boss.hurt_item = v.mostReward --伤害第一奖励道具 data_boss.kill_item = v.lastReward --致命伤害奖励道具 data_boss.personal_item = v.personalReward --个人奖励,可能配多个 data_boss.boss_id = v.rankingBoss[1] if bossdata and bossdata[1] then data_boss.boss_name = bossdata[1].name data_boss.boss_type = SL:GetConfigMultiKeys('cfg_BOSS_challenge', v.rankingBoss[1], 'monsterid') end table.insert(self.bossInfos, data_boss) end end function this:SetBossKillDataSort() if table.count(self.bossInfos) > 0 then for i, v in pairs(self.bossInfos) do local state = InfoManager.openServerInfo:GetNomStateByBossInfo(v.boss_group, v.boss_id) local hurt_state, kill_state = InfoManager.openServerInfo:GetSerStateOrNameByBossInfo(v.boss_group, v.boss_id) local personal_count = InfoManager.openServerInfo:GetSerStateOrNameByBossInfo(v.boss_group, v.boss_id, 3) local left_count = v.cond_count - personal_count local isget = state == 1 or hurt_state == 1 or kill_state == 1 if not isget and left_count <= 0 then v.config_index = v.config_index + 100000 ---不可领取 elseif state == 2 and hurt_state == 2 and kill_state == 2 then v.config_index = v.config_index + 10000 ---全部已领取 elseif state == 2 and hurt_state == 0 and kill_state == 0 then v.config_index = v.config_index + 1000 ---全部已领取2 elseif state == 1 or hurt_state == 1 or kill_state == 1 then v.config_index = v.config_index - 1000 ---可领取 --if hurt_state==1 or kill_state==1 then ---可领取 -- v.config_index = v.config_index - 10000 --end --if state==1 then -- v.config_index = v.config_index - 1000 --end else v.config_index = v.config_index end end table.sort(self.bossInfos, function(a, b) return a.config_index < b.config_index end) end end function this:BossKillItemCountFunc() return table.count(self.bossInfos) end function this:BossKillItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLBossKill/KLBossKillItem", self.view.datalist34, self, nil, true) if not self.bosskillItems then self.bosskillItems = {} end local kmlCtrl = item.view.root self.bosskillItems[kmlCtrl] = item return kmlCtrl end function this:BossKillItemInitFunc(realIndex, kmlcontrol) end function this:BossKillItemUpdateFunc(realIndex, kmlcontrol) local item = self.bosskillItems[kmlcontrol] local luaIndex = realIndex + 1 local info = self.bossInfos[luaIndex] item:UpdateUI(info) end -----------------------------------------强化冲榜面板数据---------------------------------------- function this:SetStrengtPanelData(ranking_id) self.strengtInfos = {} local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id) local reward_config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype) local taskTypedata = {} for i, v in pairs(reward_config_list) do if not taskTypedata[v.sort] then taskTypedata[v.sort] = {} table.insert(taskTypedata[v.sort], v) else table.insert(taskTypedata[v.sort], v) end end for k, v in pairs(taskTypedata) do local data = {} data.strengtLv = v[1].taskType --强化综合等级 data.config_index = v[1].taskType data.first_item = v[1].taskReward[1] ---第一奖励道具 data.second_item = v[2].taskReward[1] ---第二奖励道具 data.third_item = v[3].taskReward[1] ---第三奖励道具 table.insert(self.strengtInfos, data) end if table.count(self.strengtInfos) > 0 then table.sort(self.strengtInfos, function(a, b) return a.strengtLv < b.strengtLv end) end end ---都被领取完时(或者都是可领取状态),将该挡放到最底下 function this:SetStrengtPanelDataSort() if self.strengtInfos and table.count(self.strengtInfos) > 0 then for k, v in pairs(self.strengtInfos) do local fist_state, second_state, third_state = InfoManager.openServerInfo:GetRankNameBytaskType(v.strengtLv, 2) if fist_state == 2 and second_state == 2 and third_state == 2 then v.config_index = v.strengtLv + 1000 else v.config_index = v.strengtLv end end table.sort(self.strengtInfos, function(a, b) return a.config_index < b.config_index end) end end function this:SetStrengtPanelText(ranking_id) self.personalrewardid = nil local rankinfo = InfoManager.openServerInfo.rankInfo if rankinfo then local str = "" local des = "强化等级达到" local leftcount = 0 ---剩余数量 local preLv = rankinfo.my_value ---当前强化/追加 等级 local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id) local allnum, data = InfoManager.openServerInfo:GetAllCountlimite(ranking_id, limiteLv) ---总次数 local ismaxLv = self.maxlimiteLv == limiteLv and mystatus == 2 if allnum - usecount > 0 then leftcount = allnum - usecount end if mystatus == 1 then leftcount = leftcount + 1 end if data then self.personalrewardid = data.taskType[1] --v.index self.rewardInfo = data.taskReward GUI:DataListUpdateData(self.view.datalist92) ---个人奖励 end if ranksort == 0 then GUI:Text_setString(self.view.text89, "未上榜") else GUI:Text_setString(self.view.text89, tostring(ranksort)) end GUI:Text_setString(self.view.text66s, "剩余:" .. leftcount) GUI:Text_setString(self.view.text15, "强化综合等级") if ranking_id == EOpenServerType.SupplementPlacard then des = "追加等级达到" GUI:Text_setString(self.view.text15, "追加综合等级") end if preLv >= limiteLv then str = des .. "" .. preLv .. "/" .. limiteLv .. "" .. "级领取" else str = des .. "" .. preLv .. "/" .. limiteLv .. "" .. "级领取" end GUI:Text_setString(self.view.text103, str) GUI:SetActive(self.view.bgReciveImg, ismaxLv) --已领取 if ismaxLv and self.rewardInfo and #self.rewardInfo > 0 then GUI:setPositionX(self.view.bgReciveImg, -260 + (#self.rewardInfo) * 20) end ---是否达到最高已领取,不显示该区域 if ismaxLv then --GUI:Text_setString(self.view.text103, "") GUI:SetActive(self.view.button2, false) GUI:SetActive(self.view.light_btn2, false) else GUI:SetActive(self.view.button2, mystatus == 1 and preLv >= limiteLv) GUI:SetActive(self.view.light_btn2, mystatus == 1 and preLv >= limiteLv) end end end function this:StrengtItemCountFunc() return table.count(self.strengtInfos) end function this:StrengtItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLStrengthen/KLStrengthenItem", self.view.datalist83, self, nil, true) if not self.strengtItems then self.strengtItems = {} end local kmlCtrl = item.view.root self.strengtItems[kmlCtrl] = item return kmlCtrl end function this:StrengtItemInitFunc(realIndex, kmlcontrol) end function this:StrengtItemUpdateFunc(realIndex, kmlcontrol) local item = self.strengtItems[kmlcontrol] local luaIndex = realIndex + 1 local info = self.strengtInfos[luaIndex] item:UpdateUI(info, self.ranking_id) end ------------------------------------------装备首爆面板数据----------------------------------- function this:SetEquipDropPanelData(ranking_id) self.equipDropInfos = {} local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id) local boss_config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype) local personal_config_list = SL:FindConfigs("cfg_newarea_personalreward", "group", cfg[1].subtype) for i, v in pairs(boss_config_list) do local data = {} data.config_sort = v.sort data.equip_item_id = v.taskType --装备id data.reward_item = v.taskReward --首曝奖励道具 if personal_config_list[i] then data.personalreward_type = personal_config_list[i].taskType data.personalreward_item = personal_config_list[i].taskReward --个人奖励道具 end table.insert(self.equipDropInfos, data) end if table.count(self.equipDropInfos) > 0 then table.sort(self.equipDropInfos, function(a, b) return a.config_sort < b.config_sort end) end end ---刷新次数 function this:SetEquipPanelDataSort() if self.equipDropInfos and table.count(self.equipDropInfos) > 0 then for k, v in pairs(self.equipDropInfos) do local state, usecount, rank = InfoManager.openServerInfo:GetRankAndNumByType(v.personalreward_type[1], v.personalreward_type[2]) local name, serstate = InfoManager.openServerInfo:GetRankNameBySort(v.equip_item_id, 1) if state == 2 and serstate == 2 then v.config_sort = v.config_sort + 1000 else v.config_sort = v.config_sort end end table.sort(self.equipDropInfos, function(a, b) return a.config_sort < b.config_sort end) end end function this:EquipDropItemCountFunc() return table.count(self.equipDropInfos) end function this:EquipDropItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLEquipDrop/KLEquipDropItem", self.view.datalist54, self, nil, true) if not self.equipDropItems then self.equipDropItems = {} end local kmlCtrl = item.view.root self.equipDropItems[kmlCtrl] = item return kmlCtrl end function this:EquipDropItemInitFunc(realIndex, kmlcontrol) end function this:EquipDropItemUpdateFunc(realIndex, kmlcontrol) local item = self.equipDropItems[kmlcontrol] for i, v in pairs(self.equipDropItems) do v:SetPosEquipItem() end local luaIndex = realIndex + 1 local info = self.equipDropInfos[luaIndex] item:UpdateUI(info, self.ranking_id) end ---------------------------------------竞技面板数据------------------------------- function this:SetAthleticsPanelData(ranking_id) local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id) local config_list = SL:FindConfigs("cfg_newarea_rankingreward", "group", cfg[1].subtype) self.data_list = {} self.data_type = {} if table.count(config_list) > 0 then for k, v in pairs(config_list) do if not self.data_list[v.taskType] then self.data_list[v.taskType] = {} table.insert(self.data_list[v.taskType], v) table.insert(self.data_type, { taskType = v.taskType }) else table.insert(self.data_list[v.taskType], v) end end end if table.count(self.data_type) > 0 then table.sort(self.data_type, function(a, b) return a.taskType < b.taskType end) end end function this:SetAthleticsInfoData(ranking_id) local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id) self.athleticsInfos = {} local rankdata = {} if self.data_list and table.count(self.data_list) > 0 then for i, v in pairs(self.data_list) do if i == limiteLv then table.insert(rankdata, v) end end end if rankdata and table.count(rankdata) > 0 then self.athleticsInfos = rankdata[1] end --if self.data_list and self.data_type then -- local retdata = InfoManager.openServerInfo:GetAthleticsUnGetMinSortData(self.data_list,self.data_type,self.data_type[1].taskType) -- if retdata and table.count(retdata) > 0 then -- for k, v in pairs(retdata) do -- local taskdata = self.data_list[v.tasktype] -- local sortdata = taskdata[v.sort] -- table.insert(self.athleticsInfos,sortdata) -- end -- end -- if table.count( self.athleticsInfos) > 0 then -- table.sort(self.athleticsInfos, function(a, b) -- return a.sort < b.sort -- end) -- end --end end function this:GetPersonalInfo(ranking_id) local cfg = SL:FindConfigs("cfg_newarea_ranking", "id", ranking_id) local personal_list = SL:FindConfigs("cfg_newarea_personalreward", "group", cfg[1].subtype) if table.count(personal_list) > 0 then table.sort(personal_list, function(a, b) return a.sort < b.sort end) end self.mixlimiteLv = personal_list[1].taskType[1] self.maxlimiteLv = personal_list[#personal_list].taskType[1] local limiteLv, mystatus, ranksort, usecount = InfoManager.openServerInfo:GetUnGetMinlimiteLv(self.maxlimiteLv, self.mixlimiteLv, personal_list) return limiteLv, mystatus, ranksort, usecount end -----个人奖励,排行和描述--------- function this:SetAthleticsPanelText(ranking_id) self.athleticsrewardid = nil local rankinfo = InfoManager.openServerInfo.rankInfo if rankinfo then local str = "" local leftcount = 0 ---剩余数量 local preLv = rankinfo.my_value ---当前竞技等级 local limiteLv, mystatus, ranksort, usecount = self:GetPersonalInfo(ranking_id) local allnum, data = InfoManager.openServerInfo:GetAllCountlimite(ranking_id, limiteLv) ---总次数 local ismaxLv = self.maxlimiteLv == limiteLv and mystatus == 2 if allnum - usecount > 0 then leftcount = allnum - usecount end if mystatus == 1 then leftcount = leftcount + 1 end if data then self.athleticsrewardid = data.taskType[1] self.rewardbotInfo = data.taskReward GUI:DataListUpdateData(self.view.datalistbot) ---个人奖励 end if ranksort == 0 then GUI:Text_setString(self.view.textrank, "未上榜") else GUI:Text_setString(self.view.textrank, tostring(ranksort)) ---排名 end GUI:Text_setString(self.view.text77s, "剩余:" .. leftcount) local des = "等级达到" local desDw = "级" if ranking_id == EOpenServerType.ExcellenceAthletics then des = "卓越词条达到" desDw = "个" elseif ranking_id == EOpenServerType.JewelryAthletics then des = "首饰等级达到" end if preLv >= limiteLv then str = des .. "" .. preLv .. "/" .. limiteLv .. "" .. desDw .."领取" else str = des .. "" .. preLv .. "/" .. limiteLv .. "" .. desDw .."领取" end GUI:Text_setString(self.view.textrankLv, str) GUI:SetActive(self.view.botReciveImg, ismaxLv) --已领取 if ismaxLv and self.rewardbotInfo and #self.rewardbotInfo > 0 then GUI:setPositionX(self.view.botReciveImg, -260 + (#self.rewardbotInfo) * 20) end if ismaxLv then --GUI:Text_setString(self.view.textrankLv, "") GUI:SetActive(self.view.button22, false) GUI:SetActive(self.view.light_btn22, false) else GUI:SetActive(self.view.button22, mystatus == 1 and preLv >= limiteLv) ---是否可领取 GUI:SetActive(self.view.light_btn22, mystatus == 1 and preLv >= limiteLv) end end end function this:AthleticsItemCountFunc() return table.count(self.athleticsInfos) end function this:AthleticsItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ServerActivity/Item/KLAthletics/KLAthleticsItem", self.view.datalistMid, self, nil, true) if not self.athleticsItems then self.athleticsItems = {} end local kmlCtrl = item.view.root self.athleticsItems[kmlCtrl] = item return kmlCtrl end function this:AthleticsItemInitFunc(realIndex, kmlcontrol) end function this:AthleticsItemUpdateFunc(realIndex, kmlcontrol) local item = self.athleticsItems[kmlcontrol] local luaIndex = realIndex + 1 local info = self.athleticsInfos[luaIndex] item:UpdateUI(info, self.ranking_id) end function this:Close() if self.sectimer then SL:UnSchedule(self.sectimer) self.sectimer = nil end end return this