KLHuntingDemonsHallOfFamePanel.lua 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. ---@class KLHuntingDemonsHallOfFamePanel:UIKmlLuaPanelBase
  2. ---@field view KLHuntingDemonsHallOfFamePanelView
  3. local KLHuntingDemonsHallOfFamePanel = class(UIKmlLuaPanelBase)
  4. local this =KLHuntingDemonsHallOfFamePanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. self.isFirstOpen = true
  10. ---可携带勋章上限
  11. self.maxMedalNum = tonumber(SL:GetConfig("cfg_global",27003).value)
  12. ---当前勋章数量
  13. self.medalNum = 0
  14. ---前三名模型列表
  15. self.roleList =
  16. {
  17. [1] = self.view.role_mid,
  18. [2] = self.view.role_left,
  19. [3] = self.view.role_right,
  20. }
  21. ---前三名积分文本列表
  22. self.roleIntegralList =
  23. {
  24. [1] = self.view.role_mid_integral_Text,
  25. [2] = self.view.role_left_integral_Text,
  26. [3] = self.view.role_right_integral_Text,
  27. }
  28. ---前三名勋章数量文本列表
  29. self.roleItemNumberList =
  30. {
  31. [1] = self.view.role_mid_item_Text,
  32. [2] = self.view.role_left_item_Text,
  33. [3] = self.view.role_right_item_Text,
  34. }
  35. ---前三名名字文本列表
  36. self.roleNameList =
  37. {
  38. [1] = self.view.role_mid_name_Text,
  39. [2] = self.view.role_left_name_Text,
  40. [3] = self.view.role_right_name_Text,
  41. }
  42. self.jumpPath = {"openUIPanel","dev/ui/ShopMall/Panel/KLShopMall/KLShopMallPanel","1","2011"}
  43. GUI:Item_setItemId(self.view.item,InfoManager.uiHuntingDemonsInfo.itemID)
  44. end
  45. ---注册UI事件和服务器消息
  46. function this:RegistEvents()
  47. GUI:AddOnClickEvent(self.view.HelpButton,self,self.OnClickHelp)
  48. GUI:AddOnClickEvent(self.view.btn_go,self,self.OnClickGo)
  49. GUI:AddOnClickEvent(self.view.btn_shop,self,self.OnClickShop)
  50. GUI:AddOnClickEvent(self.view.item,self,self.OnClickShowTips)
  51. SL:RegisterLUAEvent(LUA_EVENT_REQ_HUNTING_DEMONS_THREE_PLAYER_END, self.LUA_EVENT_REQ_HUNTING_DEMONS_THREE_PLAYER_END, self)
  52. SL:RegisterLUAEvent(LUA_EVENT_HUNTING_DEMONS_RANK_DATA_CHANGE, self.LUA_EVENT_HUNTING_DEMONS_RANK_DATA_CHANGE, self)
  53. SL:RegisterLUAEvent(LUA_EVENT_HUNTING_DEMONS_INFO_CHANGE, self.LUA_EVENT_HUNTING_DEMONS_INFO_CHANGE, self)
  54. end
  55. ---显示猎魔道具tips
  56. function this:OnClickShowTips()
  57. SL:OpenTips("",InfoManager.uiHuntingDemonsInfo.itemID)
  58. end
  59. ---猎魔信息变动
  60. function this:LUA_EVENT_HUNTING_DEMONS_INFO_CHANGE()
  61. local isRest = true
  62. local time = InfoManager.uiHuntingDemonsInfo.resetSec * 1000
  63. if time > InfoManager.uiHuntingDemonsInfo.settleSec * 1000 then
  64. time = InfoManager.uiHuntingDemonsInfo.settleSec * 1000
  65. isRest = false
  66. end
  67. local count = (time - tonumber(SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME))) * 0.001 + 1
  68. local func = function()
  69. local now = tonumber(SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME))
  70. local deltaTime = time - now
  71. GUI:Text_setString(self.view.timeText, isRest
  72. and "离重置的剩余时间:".. self:FormatTimeHMS(deltaTime) or "离结算的剩余时间:"..self:FormatTimeHMS(deltaTime))
  73. if deltaTime <= 0 then
  74. GUI:Text_setString(self.view.timeText, "")
  75. self:UnScheduleTimer()
  76. if time > 0 then
  77. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_HUNT_INFO)
  78. end
  79. end
  80. end
  81. func()
  82. self.countDown = SL:Schedule(self.countDown, 0, 1, count, func)
  83. end
  84. --单位毫秒
  85. function this:FormatTimeHMS(time)
  86. time = time // 1000
  87. local s = time % 60
  88. local m = time // 60 % 60
  89. local h = time // 3600 % 24
  90. return string.format("%02s:%02s:%02s", h, m, s);
  91. end
  92. function this:UnScheduleTimer()
  93. if self.countDown then
  94. SL:UnSchedule(self.countDown)
  95. end
  96. self.countDown = nil
  97. end
  98. ---猎魔排行榜数据变动
  99. function this:LUA_EVENT_HUNTING_DEMONS_RANK_DATA_CHANGE()
  100. self:SetMedalNumText()
  101. end
  102. ---请求前三名猎魔玩家数据完成
  103. function this:LUA_EVENT_REQ_HUNTING_DEMONS_THREE_PLAYER_END()
  104. for i = 1, 3 do
  105. ---人物数据
  106. local data = InfoManager.uiHuntingDemonsInfo:GetTheFirstThreeRankData(i)
  107. local integral = ""
  108. local itemNum = ""
  109. local name = ""
  110. ---排行榜数据
  111. local rankData = InfoManager.uiHuntingDemonsInfo:GetRankDataIndex(i)
  112. if rankData and rankData.integral then
  113. integral = "杀怪积分:"..SL:GetSimpleNumber(Mathf.Ceil(rankData.integral),1)
  114. end
  115. if rankData and rankData.medal then
  116. itemNum = "获得猎魔勋章:"..SL:GetSimpleNumber(Mathf.Ceil(rankData.medal),1)
  117. end
  118. if rankData and rankData.roleInfo and rankData.roleInfo.name then
  119. name = rankData.roleInfo.name
  120. end
  121. GUI:Text_setString(self.roleIntegralList[i],integral)
  122. GUI:Text_setString(self.roleItemNumberList[i],itemNum)
  123. GUI:Text_setString(self.roleNameList[i],name)
  124. GUI:setVisible(self.roleList[i],false)
  125. if data then
  126. GUI:setVisible(self.roleList[i],true)
  127. local model_list, equip_list = InfoManager.uiHuntingDemonsInfo:GetPlayerRoleInfo(data.role)
  128. GUI:SetPlayerRoleInfo(self.roleList[i], model_list, equip_list)
  129. end
  130. end
  131. end
  132. ---点击打开帮助页面
  133. function this:OnClickHelp()
  134. local helpCfg=SL:GetConfig("cfg_rule_text",27001)
  135. if helpCfg then
  136. SL:CommonStrTipsMessage({title =helpCfg.menutxt,str=helpCfg.location})
  137. end
  138. end
  139. ---点击前往猎魔
  140. function this:OnClickGo()
  141. self.args.mainPanel:SelectTogglePanel(2)
  142. end
  143. ---点击前往猎魔商店
  144. function this:OnClickShop()
  145. self.args.mainPanel:OnClickClose()
  146. SL:ShortcutDO(self.jumpPath)
  147. end
  148. ---界面显示时调用一次
  149. function this:Show()
  150. self:LUA_EVENT_REQ_HUNTING_DEMONS_THREE_PLAYER_END()
  151. self:LUA_EVENT_HUNTING_DEMONS_RANK_DATA_CHANGE()
  152. self:LUA_EVENT_HUNTING_DEMONS_INFO_CHANGE()
  153. end
  154. ---创建或者刷新界面数据时调用
  155. function this:Refresh()
  156. self:SetMedalNumText()
  157. end
  158. ---设置勋章数量文本
  159. function this:SetMedalNumText()
  160. self.medalNum = SL:GetTotalCoinBaseId(InfoManager.uiHuntingDemonsInfo.itemID)
  161. GUI:Text_setString(self.view.NumText,"勋章:"..self.medalNum)
  162. end
  163. function this:Hide()
  164. end
  165. function this:Close()
  166. self:UnScheduleTimer()
  167. end
  168. return this