---@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