KLOpenServerAthleticsPersonChallengeItem.lua 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. ---@class KLOpenServerAthleticsPersonChallengeItem:UIKmlLuaPanelBase
  2. ---@field view KLOpenServerAthleticsPersonChallengeItemView
  3. local KLOpenServerAthleticsPersonChallengeItem = class(UIKmlLuaPanelBase)
  4. local this = KLOpenServerAthleticsPersonChallengeItem
  5. ---创建时调用一次
  6. function this:Init()
  7. self.ItemList = {}
  8. self.careerId = SL:GetMetaValue(EMetaVarGetKey.JOB)
  9. end
  10. ---注册UI事件和服务器消息
  11. function this:RegistEvents()
  12. GUI:AddOnClickEvent(self.view.BtnGo, self, self.BtnGoOnclick)
  13. end
  14. function this:BtnGoOnclick()
  15. if self.luaIndex and self.ShowDataChallengeTbl then
  16. if self.IsGetState == 0 and self.BtnSelectIndex then
  17. local instruction = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].instruction
  18. GUI:UIPanel_Close("dev/outui/MainActivity/Panel/KLMainActivity/KLMainActivityPanel")
  19. shortcutOutMgr.DO(instruction)
  20. --SL:HideMainPanel()
  21. return
  22. end
  23. if self.IsGetState == 1 then
  24. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SINGLE_CHALLENGE_AWARD, { id = self.ShowDataChallengeTbl[self.luaIndex].id })
  25. else
  26. SL:TipMessage(SL:GetConfig('cfg_string', 338).text, 1, NoticeType.NoticeMid)
  27. return
  28. end
  29. end
  30. end
  31. ---界面显示时调用一次
  32. function this:Show()
  33. end
  34. ---创建或者刷新界面数据时调用
  35. function this:Refresh()
  36. end
  37. function this:UpdateUI(luaIndex, ShowDataChallengeTbl, ShowDataChallengeList, BtnSelectIndex)
  38. self.luaIndex = luaIndex
  39. self.ShowDataChallengeTbl = ShowDataChallengeTbl
  40. self.IsGetState = 0
  41. self.BtnSelectIndex = BtnSelectIndex
  42. self.IsLimitReward = false
  43. GUI:SetActive(self.view.Red, false)
  44. GUI:Text_setString(self.view.BtnGo, "去提升")
  45. if ShowDataChallengeTbl then
  46. GUI:Text_setString(self.view.PersonCount, ShowDataChallengeTbl[luaIndex].desc)
  47. GUI:SetActive(self.view.Finished, false)
  48. if ShowDataChallengeList then
  49. if ShowDataChallengeList.num >= ShowDataChallengeTbl[luaIndex].typeDemandValue then
  50. GUI:Text_setString(self.view.jindu_count, "<color=#5DE367>" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "</color>/" .. GUIUtil.GetSampleNumberString(ShowDataChallengeTbl[luaIndex].typeDemandValue))
  51. else
  52. GUI:Text_setString(self.view.jindu_count, "<color=#fe5047>" .. GUIUtil.GetSampleNumberString(ShowDataChallengeList.num) .. "</color>/" .. GUIUtil.GetSampleNumberString(ShowDataChallengeTbl[luaIndex].typeDemandValue))
  53. end
  54. if ShowDataChallengeList.num >= ShowDataChallengeTbl[luaIndex].typeDemandValue then
  55. GUI:Text_setString(self.view.BtnGo, "可领取")
  56. GUI:SetActive(self.view.Red, true)
  57. self.IsGetState = 1
  58. for key, v in pairs(ShowDataChallengeList.challengeAwardInfo) do
  59. if ShowDataChallengeTbl[luaIndex].id == tonumber(key) then
  60. GUI:Text_setString(self.view.BtnGo, "已领取")
  61. GUI:SetActive(self.view.Red, false)
  62. self.IsGetState = 2
  63. self.IsLimitReward = v
  64. end
  65. end
  66. end
  67. end
  68. -------------倒计时----------------------------------------------------------------------------------------
  69. local limitTime = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[BtnSelectIndex].challengeLimitTime - 1
  70. local reTime = SL:GetEndTimeStamp(tonumber(limitTime), 0)
  71. if self.IsLimitReward == true then
  72. GUI:SetActive(self.view.EndIcon, false)
  73. else
  74. GUI:SetActive(self.view.EndIcon, true)
  75. end
  76. if reTime - Time.GetServerTime() then
  77. GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_xianshi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  78. self:ShowTime(reTime)
  79. else
  80. GUI:Text_setString(self.view.PersonLimitTime, "")
  81. GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  82. end
  83. ----------------------------------------------------------------------------------------------------------
  84. local index = 1
  85. for i, v in pairs(ShowDataChallengeTbl[luaIndex].challengeReward) do
  86. local itemId = v[1]
  87. local count = v[2]
  88. local data = {
  89. width = "60",
  90. height = "60",
  91. itemid = itemId,
  92. mfixsize = "60,60",
  93. tips = "1",
  94. itemcustomcount = count
  95. }
  96. if not self.ItemList[index] then
  97. self.ItemList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.layout36, self, nil, true)
  98. end
  99. self.ItemList[index]:UpDataItem(data)
  100. if self.IsGetState == 2 then
  101. self.ItemList[index]:SetGet(true)
  102. else
  103. self.ItemList[index]:SetGet(false)
  104. end
  105. index = index + 1
  106. end
  107. local limitTimeReward = ShowDataChallengeTbl[luaIndex].limitTimeReward
  108. if limitTimeReward then
  109. if table.isNullOrEmpty(limitTimeReward) then
  110. GUI:setVisible(self.view.PersonLimitAward, false)
  111. return
  112. end
  113. GUI:setVisible(self.view.PersonLimitAward, true)
  114. for i, v in pairs(limitTimeReward) do
  115. if v[1] == self.careerId or v[1] == 0 then
  116. local itemId = v[2]
  117. local count = v[3]
  118. local data = {
  119. width = "55",
  120. height = "55",
  121. itemid = itemId,
  122. mfixsize = "55,55",
  123. tips = "1",
  124. bgtype = "0",
  125. itemcustomcount = count
  126. }
  127. if not self.ItemList[index] then
  128. self.ItemList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.PersonLimitAward, self, nil, true)
  129. end
  130. self.ItemList[index]:UpDataItem(data)
  131. if self.IsLimitReward then
  132. self.ItemList[index]:SetGet(true)
  133. else
  134. self.ItemList[index]:SetGet(false)
  135. end
  136. end
  137. end
  138. end
  139. end
  140. end
  141. function this:ShowTime(endTime)
  142. self.Timer = SL:Schedule(self.Timer, 0, 1, -1, function()
  143. local timeText = endTime - Time.GetServerTime()
  144. GUI:Text_setString(self.view.PersonLimitTime, "<color=#5DE367>" .. GUIUtil.FormatTimeHMSD(timeText // 1000) .. "</color>")
  145. if timeText <= 0 then
  146. GUI:Image_loadTexture(self.view.EndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  147. GUI:Text_setString(self.view.PersonLimitTime, "")
  148. if self.Timer then
  149. SL:UnSchedule(self.Timer)
  150. end
  151. return
  152. end
  153. end)
  154. end
  155. function this:Close()
  156. if self.Timer then
  157. SL:UnSchedule(self.Timer)
  158. end
  159. self.Timer = nil
  160. for _, v in pairs(self.ItemList) do
  161. GUI:UIPanel_Close(nil,v)
  162. end
  163. end
  164. return this