KLOpenServerAthleticsPanel.lua 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. ---@class KLOpenServerAthleticsPanel:UIKmlLuaPanelBase
  2. ---@field view KLOpenServerAthleticsPanelView
  3. local KLOpenServerAthleticsPanel = class(UIKmlLuaPanelBase)
  4. local this = KLOpenServerAthleticsPanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. self.BaseSelectIndex = 0
  10. self.careerId = SL:GetMetaValue(EMetaVarGetKey.JOB)
  11. self.ShowDataRankList = {}---服务器排行数据
  12. ---@type cfg_openSerCompetition_rank_column
  13. self.ShowDataRankTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionRankTblGroup[1]---客户端排行数据
  14. self.openSerCompetitionTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionTbl
  15. self.UIOpenServerRankingTemplateList = {}
  16. self.UIPersonChallengeTemplateList = {}
  17. self.ShowDataChallengeTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionChallengeTblGroup[1]---客户端排行数据
  18. self.ShowDataChallengeList = {}---服务器积分数据
  19. self.ChallengeLitmList = {}
  20. self.UIGiftTemplateList = {}
  21. self.ShowDataGiftTbl = {}
  22. self.TradeBtnList = {}
  23. self.TradeBtnList[1] = self.view.BtnRanking
  24. self.TradeBtnList[2] = self.view.BtnChallenge
  25. self.TradeBtnList[3] = self.view.BtnGiftBag
  26. self.BtnSelectIndex = 0
  27. self.TradeBtnSelectIndex = 0
  28. self:InitBtn()
  29. self:InitRankList()
  30. self:InitChallengeList()
  31. self:InitGiftList()
  32. end
  33. function this:InitGiftList()
  34. GUI:DataListInitData(self.view.GiftListDataList, function()
  35. return table.count(self.ShowDataGiftTbl)
  36. end, function()
  37. local item = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGift/KLOpenServerAthleticsGiftItem", self.view.UIOpenServerRankingDataList, self, nil, true)
  38. if not self.UIGiftTemplateList then
  39. self.UIGiftTemplateList = {}
  40. end
  41. local kmlCtrl = item.view.root
  42. self.UIGiftTemplateList[kmlCtrl] = item
  43. return kmlCtrl
  44. end, function()
  45. end, function(realIndex, kmlCtrl)
  46. local luaIndex = realIndex + 1
  47. local item = self.UIGiftTemplateList[kmlCtrl]
  48. item:UpdateUI(luaIndex, self.ShowDataGiftTbl)
  49. end)
  50. end
  51. function this:GetGiftTblByType(type)
  52. local list = {}
  53. if InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl then
  54. for _, gift in pairs(InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[type].gift) do
  55. if gift[1] == self.careerId or gift[1] == 0 then
  56. for i, id in pairs(gift) do
  57. if i ~= 1 then
  58. local data = SL:GetConfig("cfg_openSerCompetition_gift", id)
  59. table.insert(list, data)
  60. end
  61. end
  62. end
  63. end
  64. end
  65. table.sort(list, function(a, b)
  66. if a.count and b.count then
  67. local buycount1, totalcount1 = InfoManager.countInfo:GetLimitAndTotalCountByKey(a.count)
  68. local buycount2, totalcount2 = InfoManager.countInfo:GetLimitAndTotalCountByKey(b.count)
  69. if buycount1 <= 0 and buycount2 > 0 then
  70. return false
  71. end
  72. if buycount1 > 0 and buycount2 <= 0 then
  73. return true
  74. end
  75. end
  76. return a.id < b.id
  77. end)
  78. return list
  79. end
  80. function this:InitChallengeList()
  81. GUI:DataListInitData(self.view.UIPersonChallengeDataList, function()
  82. return table.count(self.ShowDataChallengeTbl) - 1
  83. end, function()
  84. local item = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsPersonChallenge/KLOpenServerAthleticsPersonChallengeItem", self.view.UIOpenServerRankingDataList, self, nil, true)
  85. if not self.UIPersonChallengeTemplateList then
  86. self.UIPersonChallengeTemplateList = {}
  87. end
  88. local kmlCtrl = item.view.root
  89. self.UIPersonChallengeTemplateList[kmlCtrl] = item
  90. return kmlCtrl
  91. end, function()
  92. end, function(realIndex, kmlCtrl)
  93. local luaIndex = realIndex + 1
  94. local item = self.UIPersonChallengeTemplateList[kmlCtrl]
  95. item:UpdateUI(luaIndex, self.ShowDataChallengeTbl, self.ShowDataChallengeList, self.BtnSelectIndex)
  96. end)
  97. end
  98. function this:InitRankList()
  99. GUI:DataListInitData(self.view.UIOpenServerRankingDataList, function()
  100. return table.count(self.ShowDataRankTbl)
  101. end, function()
  102. local item = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsRanking/KLOpenServerAthleticsRankingItem", self.view.UIOpenServerRankingDataList, self, nil, true)
  103. if not self.UIOpenServerRankingTemplateList then
  104. self.UIOpenServerRankingTemplateList = {}
  105. end
  106. local kmlCtrl = item.view.root
  107. self.UIOpenServerRankingTemplateList[kmlCtrl] = item
  108. return kmlCtrl
  109. end, function()
  110. end, function(realIndex, kmlCtrl)
  111. local Rank = realIndex + 1
  112. local item = self.UIOpenServerRankingTemplateList[kmlCtrl]
  113. item:UpdateUI(Rank, self.ShowDataRankTbl, self.ShowDataRankList, self.BtnSelectIndex)
  114. end)
  115. --GUI:DataListUpdateData(self.view.UIOpenServerRankingDataList)
  116. end
  117. function this:InitBtn()
  118. self.BtnTempList = {}
  119. ---@type cfg_openSerCompetition_column
  120. GUI:DataListInitData(self.view.BtnDataList, function()
  121. return table.count(self.openSerCompetitionTbl)
  122. end, function()
  123. end, function()
  124. end, function(realIndex)
  125. local index = realIndex + 1
  126. local BtnInfo = self.openSerCompetitionTbl[index]
  127. local UIOpenServerBtnTemplate = GUI:GetChildControl(self.view.BtnDataList, realIndex, 'UIOpenServerBtnTemplate')
  128. local OnGoing = GUI:GetChildControl(self.view.BtnDataList, realIndex, 'OnGoing')
  129. local Lock = GUI:GetChildControl(self.view.BtnDataList, realIndex, 'Lock')
  130. local Red = GUI:GetChildControl(self.view.BtnDataList, realIndex, 'Red')
  131. local IsLock = false
  132. local IsShow = false
  133. local showCondition = InfoManager.openServerAthleticsInfo.openSerCompetitionTbl[index].showCondition
  134. local activityCondition = InfoManager.openServerAthleticsInfo.openSerCompetitionTbl[index].activityCondition
  135. local nextShowCondition = "false"
  136. if InfoManager.openServerAthleticsInfo.openSerCompetitionTbl[index + 1] then
  137. nextShowCondition = InfoManager.openServerAthleticsInfo.openSerCompetitionTbl[index + 1].showCondition
  138. end
  139. if showCondition == "" or ConditionManager.Check4D(showCondition) then
  140. GUI:SetActive(UIOpenServerBtnTemplate, true)
  141. IsShow = true
  142. else
  143. GUI:SetActive(UIOpenServerBtnTemplate, false)
  144. IsShow = false
  145. end
  146. local rankSettlementTime = InfoManager.openServerAthleticsInfo.openSerCompetitionTbl[index].rankSettlementTime - 1
  147. local reRankTime = SL:GetEndTimeStamp(tonumber(rankSettlementTime), 0)
  148. if reRankTime - Time.GetServerTime() >= 0 then
  149. GUI:SetActive(OnGoing, true)
  150. else
  151. GUI:SetActive(OnGoing, false)
  152. end
  153. if activityCondition == "" or ConditionManager.Check4D(activityCondition) then
  154. GUI:SetActive(Lock, false)
  155. IsLock = false
  156. else
  157. GUI:SetActive(Lock, true)
  158. GUI:SetActive(OnGoing, false)
  159. IsLock = true
  160. end
  161. if self.BaseSelectIndex == 0 and not IsLock and IsShow then
  162. self.BaseSelectIndex = BtnInfo.type
  163. end
  164. --[[ if nextShowCondition == "false" or not ConditionManager.Check4D(nextShowCondition) then
  165. GUI:SetActive(OnGoing, true)
  166. end]]
  167. GUI:Button_setTitleText(UIOpenServerBtnTemplate, BtnInfo.name)
  168. local btnData = {
  169. IsLock = IsLock,
  170. index = BtnInfo.type
  171. }
  172. GUI:AddOnClickEvent(UIOpenServerBtnTemplate, self, self.BtnListOnclick, btnData)
  173. local data = {
  174. OnGoing = OnGoing,
  175. Lock = Lock,
  176. UIOpenServerBtnTemplate = UIOpenServerBtnTemplate,
  177. Red = Red
  178. }
  179. self.BtnTempList[BtnInfo.type] = data
  180. end)
  181. end
  182. function this:UpDataRedBtn()
  183. for type, v in pairs(self.BtnTempList) do
  184. if InfoManager.openServerAthleticsInfo:IsShowGiftRedBtn(type) or InfoManager.openServerAthleticsInfo:IsShowPersonAwardRedBtn(type) then
  185. GUI:SetActive(v.Red, true)
  186. else
  187. GUI:SetActive(v.Red, false)
  188. end
  189. end
  190. end
  191. function this:BtnListOnclick(_, data)
  192. local index = data.index
  193. if index == self.BtnSelectIndex then
  194. return
  195. end
  196. if data and data.IsLock == true then
  197. local activityCondition = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[index].activityCondition
  198. local day = ConditionManager.GetConditionParams(activityCondition)
  199. if day and day[1] then
  200. SL:TipMessage("第" .. day[1] .. "天开启", 1, NoticeType.NoticeMid)
  201. end
  202. if day and day[2] and tonumber(day[2]) < SL:GetOpenServerDay() then
  203. ---已结束
  204. SL:TipMessage("已结束", 1, NoticeType.NoticeMid)
  205. end
  206. return
  207. end
  208. self.BtnSelectIndex = index
  209. GUI:SetActive(self.view.Red1, false)
  210. GUI:SetActive(self.view.Red2, InfoManager.openServerAthleticsInfo:IsShowPersonAwardRedBtn(self.BtnSelectIndex))
  211. GUI:SetActive(self.view.Red3, InfoManager.openServerAthleticsInfo:IsShowGiftRedBtn(self.BtnSelectIndex))
  212. ----变动数据刷新界面
  213. if data and data.index then
  214. self:SelectBtn(index)
  215. if self.TradeBtnSelectIndex == 1 then
  216. local rankGroup = InfoManager.openServerAthleticsInfo:FindRankTblByType(self.BtnSelectIndex)
  217. self.ShowDataRankTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionRankTblGroup[rankGroup]
  218. ---竞技排行
  219. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_COMPETITION_RANK_INFO, { type = index })
  220. elseif self.TradeBtnSelectIndex == 2 then
  221. local ChallengeGroup = InfoManager.openServerAthleticsInfo:FindChallengeTblByType(self.BtnSelectIndex)
  222. self.ShowDataChallengeTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionChallengeTblGroup[ChallengeGroup]
  223. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SINGLE_CHALLENGE_INFO, { type = index })
  224. else
  225. self.ShowDataGiftTbl = self:GetGiftTblByType(self.BtnSelectIndex)
  226. GUI:DataListUpdateData(self.view.GiftListDataList)
  227. end
  228. local limitTime = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].challengeLimitTime - 1
  229. local reTime = SL:GetEndTimeStamp(tonumber(limitTime), 0)
  230. if reTime - Time.GetServerTime() >= 0 then
  231. GUI:SetActive(self.view.BtnLimitIcon, true)
  232. else
  233. GUI:SetActive(self.view.BtnLimitIcon, false)
  234. end
  235. end
  236. end
  237. function this:SelectBtn(index)
  238. for i, v in pairs(self.BtnTempList) do
  239. if i == index then
  240. GUI:Image_loadTexture(v.UIOpenServerBtnTemplate, "btn_chosen", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  241. else
  242. GUI:Image_loadTexture(v.UIOpenServerBtnTemplate, "btn_nochosen", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  243. end
  244. end
  245. end
  246. ---注册UI事件和服务器消息
  247. function this:RegistEvents()
  248. GUI:AddOnClickEvent(self.view.BtnRanking, self, self.TradeBtnListOnclick, 1)
  249. GUI:AddOnClickEvent(self.view.BtnChallenge, self, self.TradeBtnListOnclick, 2)
  250. GUI:AddOnClickEvent(self.view.BtnGiftBag, self, self.TradeBtnListOnclick, 3)
  251. SL:RegisterLUAEvent(LUA_EVENT_COMPETITION_RANK_CHANGE, self.LUA_EVENT_COMPETITION_RANK_CHANGE, self)
  252. SL:RegisterLUAEvent(LUA_EVENT_SINGLE_CHALLENGE_CHANGE, self.LUA_EVENT_SINGLE_CHALLENGE_CHANGE, self)
  253. SL:RegisterLUAEvent(LUA_OPEN_SERVER_GIFT_COUNT_CHANGE, self.LUA_OPEN_SERVER_GIFT_COUNT_CHANGE, self)
  254. GUI:AddOnClickEvent(self.view.PersonLastBtnGo, self, self.PersonLastBtnGoOnclick)
  255. end
  256. function this:PersonLastBtnGoOnclick()
  257. local lastTbl = self.ShowDataChallengeTbl[table.count(self.ShowDataChallengeTbl)]
  258. if lastTbl then
  259. if self.IsGetChallengeState == 0 and self.BtnSelectIndex then
  260. local instruction = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].instruction
  261. GUI:UIPanel_Close("dev/outui/MainActivity/Panel/KLMainActivity/KLMainActivityPanel")
  262. shortcutOutMgr.DO(instruction)
  263. --SL:HideMainPanel()
  264. return
  265. end
  266. if self.IsGetChallengeState == 1 then
  267. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SINGLE_CHALLENGE_AWARD, { id = lastTbl.id })
  268. else
  269. SL:TipMessage(SL:GetConfig('cfg_string', 338).text, 1, NoticeType.NoticeMid)
  270. return
  271. end
  272. end
  273. end
  274. function this:LUA_OPEN_SERVER_GIFT_COUNT_CHANGE(_, key)
  275. if key then
  276. --[[ local pos = 1
  277. for i,v in pairs(self.ShowDataGiftTbl) do
  278. if v.count == key then
  279. pos = i
  280. end
  281. end]]
  282. self.ShowDataGiftTbl = self:GetGiftTblByType(self.BtnSelectIndex)
  283. GUI:DataListUpdateData(self.view.GiftListDataList)
  284. --GUI:SetScrollView_scrollpos(self.view.GiftList,pos)
  285. GUI:SetActive(self.view.Red3, InfoManager.openServerAthleticsInfo:IsShowGiftRedBtn(self.BtnSelectIndex))
  286. self:UpDataRedBtn()
  287. SL:RefreshPanelALLRedStateKmlByCondition("KLUISystemTopPanel")
  288. InfoManager.mainActivityInfo:RefreshMainActivityRedPoint("tog_OpenServerAthletics", InfoManager.openServerAthleticsInfo:IsShowRed())
  289. end
  290. end
  291. ---个人排行消息
  292. function this:LUA_EVENT_COMPETITION_RANK_CHANGE(_, type)
  293. if type then
  294. if tonumber(type) ~= self.BtnSelectIndex then
  295. return
  296. end
  297. self.ShowDataRankList = {}
  298. local dataList = InfoManager.openServerAthleticsInfo.RankDataList[type]
  299. for _, v in pairs(dataList.rankInfo) do
  300. self.ShowDataRankList[v.rank] = v
  301. end
  302. local desc = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].desc
  303. local rankLimitData = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].rankLimitData
  304. if dataList.myInfo and dataList.myInfo.myNum ~= 0 and dataList.myInfo.myNum >= rankLimitData then
  305. GUI:Text_setString(self.view.Mintxt, "当前排名: 无")
  306. if dataList.myInfo.rank ~= 0 then
  307. GUI:Text_setString(self.view.Mintxt, "当前排名: " .. dataList.myInfo.rank)
  308. end
  309. GUI:Text_setString(self.view.MidText, desc[1] .. ":" .. dataList.myInfo.myNum)
  310. GUI:Text_setString(self.view.Tiptxt, "(" .. desc[2] .. ")")
  311. else
  312. GUI:Text_setString(self.view.Mintxt, desc[1] .. ":" .. dataList.myInfo.myNum)
  313. GUI:Text_setString(self.view.MidText, "最低上榜条件:" .. rankLimitData)
  314. GUI:Text_setString(self.view.Tiptxt, "(" .. desc[2] .. ")")
  315. end
  316. local rankLimitData = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].rankSettlementTime - 1
  317. local reRankTime = SL:GetEndTimeStamp(tonumber(rankLimitData), 0)
  318. if self.RankTimer then
  319. SL:UnSchedule(self.RankTimer)
  320. end
  321. self.RankTimer = nil
  322. if reRankTime - Time.GetServerTime() >= 0 then
  323. self.RankTimer = SL:Schedule(self.RankTimer, 0, 1, -1, function()
  324. local timeText = reRankTime - Time.GetServerTime()
  325. GUI:Text_setString(self.view.TxtTimePrefix, "排行进行中 " .. GUIUtil.FormatTimeHMSD(timeText // 1000))
  326. if timeText <= 0 then
  327. GUI:Text_setString(self.view.TxtTimePrefix, "排行已产生")
  328. GUI:DataListUpdateData(self.view.UIOpenServerRankingDataList)
  329. GUI:DataListUpdateData(self.view.BtnDataList,_,function()
  330. self:BtnListOnclick(_, { index = self.BaseSelectIndex })
  331. end)
  332. return
  333. end
  334. end)
  335. else
  336. GUI:Text_setString(self.view.TxtTimePrefix, "排行已产生")
  337. end
  338. GUI:DataListUpdateData(self.view.UIOpenServerRankingDataList)
  339. end
  340. end
  341. ---积分消息
  342. function this:LUA_EVENT_SINGLE_CHALLENGE_CHANGE(_, type)
  343. if type then
  344. if tonumber(type) ~= self.BtnSelectIndex then
  345. return
  346. end
  347. self.ShowDataChallengeList = {}
  348. local dataList = InfoManager.openServerAthleticsInfo.PersonDataList[type]
  349. self.ShowDataChallengeList = dataList
  350. table.sort(self.ShowDataChallengeTbl, function(a, b)
  351. local isGetA = false
  352. local isGetB = false
  353. local lastTbl = self.ShowDataChallengeTbl[table.count(self.ShowDataChallengeTbl)]
  354. if a.id == lastTbl.id or b.id == lastTbl.id then
  355. return a.id < b.id
  356. end
  357. for key, v in pairs(dataList.challengeAwardInfo) do
  358. if a.id == tonumber(key) then
  359. isGetA = true
  360. end
  361. if b.id == tonumber(key) then
  362. isGetB = true
  363. end
  364. end
  365. if isGetA and not isGetB then
  366. return false
  367. end
  368. if not isGetA and isGetB then
  369. return true
  370. end
  371. return a.id < b.id
  372. end)
  373. GUI:DataListUpdateData(self.view.UIPersonChallengeDataList)
  374. self:ChallengeUpdateUI()
  375. GUI:SetActive(self.view.Red2, InfoManager.openServerAthleticsInfo:IsShowPersonAwardRedBtn(self.BtnSelectIndex))
  376. self:UpDataRedBtn()
  377. InfoManager.mainActivityInfo:RefreshMainActivityRedPoint("tog_OpenServerAthletics", InfoManager.openServerAthleticsInfo:IsShowRed())
  378. end
  379. end
  380. ---更改界面显示
  381. function this:TradeBtnListOnclick(_, index)
  382. if index then
  383. if index == self.TradeBtnSelectIndex then
  384. return
  385. end
  386. if self.BtnSelectIndex == 0 then
  387. return
  388. end
  389. self.TradeBtnSelectIndex = index
  390. self:SelectTradeBtn(index)
  391. if index == 1 then
  392. GUI:SetActive(self.view.RankPanel, true)
  393. GUI:SetActive(self.view.PersonPanel, false)
  394. GUI:SetActive(self.view.GiftPanel, false)
  395. local rankGroup = InfoManager.openServerAthleticsInfo:FindRankTblByType(self.BtnSelectIndex)
  396. self.ShowDataRankTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionRankTblGroup[rankGroup]
  397. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_COMPETITION_RANK_INFO, { type = self.BtnSelectIndex })
  398. elseif index == 2 then
  399. GUI:SetActive(self.view.RankPanel, false)
  400. GUI:SetActive(self.view.PersonPanel, true)
  401. GUI:SetActive(self.view.GiftPanel, false)
  402. local ChallengeGroup = InfoManager.openServerAthleticsInfo:FindChallengeTblByType(self.BtnSelectIndex)
  403. self.ShowDataChallengeTbl = InfoManager.openServerAthleticsInfo.openSerCompetitionChallengeTblGroup[ChallengeGroup]
  404. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SINGLE_CHALLENGE_INFO, { type = self.BtnSelectIndex })
  405. elseif index == 3 then
  406. GUI:SetActive(self.view.RankPanel, false)
  407. GUI:SetActive(self.view.PersonPanel, false)
  408. GUI:SetActive(self.view.GiftPanel, true)
  409. self.ShowDataGiftTbl = self:GetGiftTblByType(self.BtnSelectIndex)
  410. GUI:DataListUpdateData(self.view.GiftListDataList)
  411. end
  412. end
  413. end
  414. function this:ChallengeUpdateUI()
  415. if self.ShowDataChallengeTbl then
  416. self.IsGetChallengeState = 0
  417. self.IsLimitReward = false
  418. local lastTbl = self.ShowDataChallengeTbl[table.count(self.ShowDataChallengeTbl)]
  419. GUI:Text_setString(self.view.PersonLastCount, lastTbl.desc)
  420. GUI:SetActive(self.view.PersonLastFinished, false)
  421. GUI:Text_setString(self.view.PersonLastBtnGo, "去提升")
  422. GUI:SetActive(self.view.Red4, false)
  423. if self.ShowDataChallengeList then
  424. if self.ShowDataChallengeList.num >= lastTbl.typeDemandValue then
  425. GUI:Text_setString(self.view.PersonLastjindu_count, "<color=#5DE367>" .. GUIUtil.GetSampleNumberString(self.ShowDataChallengeList.num) .. "</color>/" .. GUIUtil.GetSampleNumberString(lastTbl.typeDemandValue))
  426. else
  427. GUI:Text_setString(self.view.PersonLastjindu_count, "<color=#fe5047>" .. GUIUtil.GetSampleNumberString(self.ShowDataChallengeList.num) .. "</color>/" .. GUIUtil.GetSampleNumberString(lastTbl.typeDemandValue))
  428. end
  429. if self.ShowDataChallengeList.num >= lastTbl.typeDemandValue then
  430. GUI:SetActive(self.view.Red4, true)
  431. GUI:Text_setString(self.view.PersonLastBtnGo, "可领取")
  432. self.IsGetChallengeState = 1
  433. for key, v in pairs(self.ShowDataChallengeList.challengeAwardInfo) do
  434. if lastTbl.id == tonumber(key) then
  435. GUI:Text_setString(self.view.PersonLastBtnGo, "已领取")
  436. GUI:SetActive(self.view.Red4, false)
  437. self.IsGetChallengeState = 2
  438. self.IsLimitReward = v
  439. end
  440. end
  441. end
  442. end
  443. -------------倒计时-------------------------------------
  444. if self.ChallengeTimer then
  445. SL:UnSchedule(self.ChallengeTimer)
  446. end
  447. self.ChallengeTimer = nil
  448. local limitTime = InfoManager.openServerAthleticsInfo.openSerCompetitionTypeTbl[self.BtnSelectIndex].challengeLimitTime - 1
  449. local reTime = SL:GetEndTimeStamp(tonumber(limitTime), 0)
  450. if self.IsLimitReward == true then
  451. GUI:SetActive(self.view.PersonLastEndIcon, false)
  452. else
  453. GUI:SetActive(self.view.PersonLastEndIcon, true)
  454. end
  455. if reTime - Time.GetServerTime() >= 0 then
  456. GUI:SetActive(self.view.BtnLimitIcon, true)
  457. GUI:SetActive(self.view.PersonLastEndIcon, true)
  458. GUI:Image_loadTexture(self.view.PersonLastEndIcon, "img_kaifujingji_xianshi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  459. self:ShowTime(reTime)
  460. else
  461. GUI:SetActive(self.view.BtnLimitIcon, false)
  462. GUI:Text_setString(self.view.PersonLastLimitTime, "")
  463. GUI:Image_loadTexture(self.view.PersonLastEndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  464. -- GUI:Image_loadTexture(self.view.PersonLastEndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  465. end
  466. --------------------------------------------------------------------
  467. local index = 1
  468. for i, v in pairs(lastTbl.challengeReward) do
  469. local itemId = v[1]
  470. local count = v[2]
  471. local data = {
  472. width = "60",
  473. height = "60",
  474. itemid = itemId,
  475. mfixsize = "60,60",
  476. tips = "1",
  477. itemcustomcount = count
  478. }
  479. --[[ if self.ChallengeLitmList[index] then
  480. GUI:Item_UpdataData(self.ChallengeLitmList[index], data)
  481. else
  482. local item = GUI:Item_Create(self.view.layout59, data)
  483. self.ChallengeLitmList[index] = item
  484. end
  485. GUI:AddOnClickEvent(self.ChallengeLitmList[index], self, function()
  486. SL:OpenTips(nil, itemId)
  487. end)]]
  488. if not self.ChallengeLitmList[index] then
  489. self.ChallengeLitmList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.layout59, self, nil, true)
  490. end
  491. self.ChallengeLitmList[index]:UpDataItem(data)
  492. if self.IsGetChallengeState == 2 then
  493. self.ChallengeLitmList[index]:SetGet(true)
  494. else
  495. self.ChallengeLitmList[index]:SetGet(false)
  496. end
  497. index = index + 1
  498. end
  499. local limitTimeReward = lastTbl.limitTimeReward
  500. if limitTimeReward then
  501. if table.isNullOrEmpty(limitTimeReward) then
  502. GUI:setVisible(self.view.PersonLastLimitAward, false)
  503. return
  504. end
  505. GUI:setVisible(self.view.PersonLastLimitAward, true)
  506. for i, v in pairs(limitTimeReward) do
  507. if v[1] == self.careerId or v[1] == 0 then
  508. local itemId = v[2]
  509. local count = v[3]
  510. local data = {
  511. width = "55",
  512. height = "55",
  513. itemid = itemId,
  514. mfixsize = "55,55",
  515. tips = "1",
  516. bgtype = "0",
  517. itemcustomcount = count
  518. }
  519. if not self.ChallengeLitmList[index] then
  520. self.ChallengeLitmList[index] = GUI:UIPanel_Open("dev/outui/OpenServerAthletics/Item/KLOpenServerAthleticsGetItem/KLOpenServerAthleticsGetItemItem", self.view.PersonLastLimitAward, self, nil, true)
  521. end
  522. self.ChallengeLitmList[index]:UpDataItem(data)
  523. if self.IsLimitReward then
  524. self.ChallengeLitmList[index]:SetGet(true)
  525. else
  526. self.ChallengeLitmList[index]:SetGet(false)
  527. end
  528. end
  529. end
  530. end
  531. end
  532. end
  533. function this:ShowTime(endTime)
  534. self.ChallengeTimer = SL:Schedule(self.ChallengeTimer, 0, 1, -1, function()
  535. local timeText = endTime - Time.GetServerTime()
  536. GUI:Text_setString(self.view.PersonLastLimitTime, "<color=#5DE367>" .. GUIUtil.FormatTimeHMSD(timeText // 1000) .. "</color>")
  537. if timeText <= 0 then
  538. GUI:Image_loadTexture(self.view.PersonLastEndIcon, "img_kaifujingji_guoqi", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  539. GUI:Text_setString(self.view.PersonLastLimitTime, "")
  540. --[[ if self.ChallengeTimer then
  541. SL:UnSchedule(self.ChallengeTimer)
  542. end]]
  543. return
  544. end
  545. end)
  546. end
  547. function this:SelectTradeBtn(index)
  548. for i, v in pairs(self.TradeBtnList) do
  549. if i == index then
  550. GUI:Image_loadTexture(v, "btn_green1", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  551. else
  552. GUI:Image_loadTexture(v, "btn_green2", "Atlas/QJ5_OpenServerAthleticsPanel.spriteatlas")
  553. end
  554. end
  555. end
  556. ---界面显示时调用一次
  557. function this:Show()
  558. end
  559. ---创建或者刷新界面数据时调用
  560. function this:Refresh()
  561. self.BtnSelectIndex = 0
  562. self.TradeBtnSelectIndex = 0
  563. self.lastBtnIndex = 1
  564. GUI:DataListUpdateData(self.view.BtnDataList,_,function()
  565. self:BtnListOnclick(_, { index = self.BaseSelectIndex })
  566. self:TradeBtnListOnclick(_, 1)
  567. self:UpDataRedBtn()
  568. end)
  569. InfoManager.mainActivityInfo:RefreshMainActivityRedPoint("tog_OpenServerAthletics", InfoManager.openServerAthleticsInfo:IsShowRed())
  570. end
  571. function this:Close()
  572. if self.ChallengeTimer then
  573. SL:UnSchedule(self.ChallengeTimer)
  574. end
  575. self.ChallengeTimer = nil
  576. if self.RankTimer then
  577. SL:UnSchedule(self.RankTimer)
  578. end
  579. self.RankTimer = nil
  580. for _, v in pairs(self.ChallengeLitmList) do
  581. GUI:UIPanel_Close(nil,v)
  582. end
  583. end
  584. return this