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