---@class KLOpenServerAthleticsPersonChallengeItem:UIKmlLuaPanelBase
---@field view KLOpenServerAthleticsPersonChallengeItemView
local KLOpenServerAthleticsPersonChallengeItem = class(UIKmlLuaPanelBase)
local this = KLOpenServerAthleticsPersonChallengeItem
---创建时调用一次
function this:Init()
self.ItemList = {}
self.careerId = SL:GetMetaValue(EMetaVarGetKey.JOB)
end
---注册UI事件和服务器消息
function this:RegistEvents()
GUI:AddOnClickEvent(self.view.BtnGo, self, self.BtnGoOnclick)
end
function this:BtnGoOnclick()
if self.luaIndex and self.ShowDataChallengeTbl then
if self.IsGetState == 0 and self.BtnSelectIndex then
local instruction = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].instruction
GUI:UIPanel_Close("dev/outui/MainActivity/Panel/KLMainActivity/KLMainActivityPanel")
shortcutOutMgr.DO(instruction)
--SL:HideMainPanel()
return
end
if self.IsGetState == 1 then
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SINGLE_CHALLENGE_AWARD, { id = self.ShowDataChallengeTbl[self.luaIndex].id })
else
SL:TipMessage(SL:GetConfig('cfg_string', 338).text, 1, NoticeType.NoticeMid)
return
end
end
end
---界面显示时调用一次
function this:Show()
end
---创建或者刷新界面数据时调用
function this:Refresh()
end
function this:UpdateUI(luaIndex, ShowDataChallengeTbl, ShowDataChallengeList, BtnSelectIndex)
self.luaIndex = luaIndex
self.ShowDataChallengeTbl = ShowDataChallengeTbl
self.IsGetState = 0
self.BtnSelectIndex = BtnSelectIndex
self.IsLimitReward = false
GUI:SetActive(self.view.Red, false)
GUI:Text_setString(self.view.BtnGo, "去提升")
if ShowDataChallengeTbl then
GUI:Text_setString(self.view.PersonCount, ShowDataChallengeTbl[luaIndex].desc)
GUI:SetActive(self.view.Finished, false)
if ShowDataChallengeList then
if ShowDataChallengeList.num >= ShowDataChallengeTbl[luaIndex].typeDemandValue then
GUI:Text_setString(self.view.jindu_count, "" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "/" .. GUIUtil.GetSampleNumberString(ShowDataChallengeTbl[luaIndex].typeDemandValue))
else
GUI:Text_setString(self.view.jindu_count, "" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "/" .. GUIUtil.GetSampleNumberString(ShowDataChallengeTbl[luaIndex].typeDemandValue))
end
if ShowDataChallengeList.num >= ShowDataChallengeTbl[luaIndex].typeDemandValue then
GUI:Text_setString(self.view.BtnGo, "可领取")
GUI:SetActive(self.view.Red, true)
self.IsGetState = 1
for key, v in pairs(ShowDataChallengeList.challengeAwardInfo) do
if ShowDataChallengeTbl[luaIndex].id == tonumber(key) then
GUI:Text_setString(self.view.BtnGo, "已领取")
GUI:SetActive(self.view.Red, false)
self.IsGetState = 2
self.IsLimitReward = v
end
end
end
end
-------------倒计时----------------------------------------------------------------------------------------
local limitTime = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[BtnSelectIndex].challengeLimitTime - 1
local reTime = SL:GetEndTimeStamp(tonumber(limitTime), 0)
if self.IsLimitReward == true then
GUI:SetActive(self.view.EndIcon, false)
else
GUI:SetActive(self.view.EndIcon, true)
end
if reTime - Time.GetServerTime() then
GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_xianshi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
self:ShowTime(reTime)
else
GUI:Text_setString(self.view.PersonLimitTime, "")
GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
end
----------------------------------------------------------------------------------------------------------
local index = 1
for i, v in pairs(ShowDataChallengeTbl[luaIndex].challengeReward) do
local itemId = v[1]
local count = v[2]
local data = {
width = "60",
height = "60",
itemid = itemId,
mfixsize = "60,60",
tips = "1",
itemcustomcount = count
}
if not self.ItemList[index] then
self.ItemList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.layout36, self, nil, true)
end
self.ItemList[index]:UpDataItem(data)
if self.IsGetState == 2 then
self.ItemList[index]:SetGet(true)
else
self.ItemList[index]:SetGet(false)
end
index = index + 1
end
local limitTimeReward = ShowDataChallengeTbl[luaIndex].limitTimeReward
if limitTimeReward then
if table.isNullOrEmpty(limitTimeReward) then
GUI:setVisible(self.view.PersonLimitAward, false)
return
end
GUI:setVisible(self.view.PersonLimitAward, true)
for i, v in pairs(limitTimeReward) do
if v[1] == self.careerId or v[1] == 0 then
local itemId = v[2]
local count = v[3]
local data = {
width = "55",
height = "55",
itemid = itemId,
mfixsize = "55,55",
tips = "1",
bgtype = "0",
itemcustomcount = count
}
if not self.ItemList[index] then
self.ItemList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.PersonLimitAward, self, nil, true)
end
self.ItemList[index]:UpDataItem(data)
if self.IsLimitReward then
self.ItemList[index]:SetGet(true)
else
self.ItemList[index]:SetGet(false)
end
end
end
end
end
end
function this:ShowTime(endTime)
self.Timer = SL:Schedule(self.Timer, 0, 1, -1, function()
local timeText = endTime - Time.GetServerTime()
GUI:Text_setString(self.view.PersonLimitTime, "" .. GUIUtil.FormatTimeHMSD(timeText // 1000) .. "")
if timeText <= 0 then
GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
GUI:Text_setString(self.view.PersonLimitTime, "")
if self.Timer then
SL:UnSchedule(self.Timer)
end
return
end
end)
end
function this:Close()
if self.Timer then
SL:UnSchedule(self.Timer)
end
self.Timer = nil
for _, v in pairs(self.ItemList) do
GUI:UIPanel_Close(nil,v)
end
end
return this