123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- ---@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, "<color=#5DE367>" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "</color>/" .. GUIUtil.GetSampleNumberString(ShowDataChallengeTbl[luaIndex].typeDemandValue))
- else
- GUI:Text_setString(self.view.jindu_count, "<color=#fe5047>" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "</color>/" .. 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, "<color=#5DE367>" .. GUIUtil.FormatTimeHMSD(timeText // 1000) .. "</color>")
- 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
|