KLBraveTrialsWindowPanel.lua 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. ---@class KLBraveTrialsWindowPanel:UIKmlLuaPanelBase
  2. ---@field view KLBraveTrialsWindowPanelView
  3. local KLBraveTrialsWindowPanel = class(UIKmlLuaPanelBase)
  4. local this =KLBraveTrialsWindowPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. SL:KeepOpenPanel("KLBraveTrialsWindowPanel",true)
  8. self.braveType = 12001
  9. ---@type cfg_rep_column
  10. self.trialsTbl = SL:GetConfig("cfg_rep", self.args["3"])
  11. self.trialsState = self.args["1"]
  12. --self.trialsNextStateTime = self.args[2]
  13. GUI:DataListInitData( self.view.rewardItem_List,function()
  14. return self:ListItemCountFunc()
  15. end,function(realIndex)
  16. return self:ListItemGetFunc(realIndex)
  17. end,function(realIndex, kmlcontrol)
  18. return self:ListItemInitFunc(realIndex, kmlcontrol)
  19. end, function(realIndex, kmlcontrol)
  20. return self:ListItemUpdateFunc(realIndex, kmlcontrol)
  21. end)
  22. GUI:DataListInitData( self.view.rewardItem_finish_List,function()
  23. return self:ListItemCountFunc()
  24. end,function(realIndex)
  25. return self:ListItemGetFunc(realIndex)
  26. end,function(realIndex, kmlcontrol)
  27. return self:ListItemInitFunc(realIndex, kmlcontrol)
  28. end, function(realIndex, kmlcontrol)
  29. return self:FinishListItemUpdateFunc(realIndex, kmlcontrol)
  30. end)
  31. end
  32. function this:ListItemCountFunc()
  33. return #self.trialsTbl.reward
  34. end
  35. function this:ListItemGetFunc(realIndex)
  36. --GUI:UIPanel_Open("dev/outui/BraveTrials/Panel/KLBraveTrialsWindow/KLBraveTrialsWindowPanel")
  37. end
  38. function this:ListItemInitFunc(realIndex, kmlcontrol)
  39. end
  40. function this:ListItemUpdateFunc(realIndex, kmlcontrol)
  41. local item = GUI:GetChildControl(self.view.rewardItem_List, realIndex, "control_item")
  42. local count = GUI:GetChildControl(self.view.rewardItem_List, realIndex, "countTxt")
  43. local info = self.trialsTbl.reward[realIndex + 1]
  44. GUI:Item_setItemId(item, info[1])
  45. GUI:Text_setString(count, info[2])
  46. end
  47. function this:FinishListItemUpdateFunc(realIndex, kmlcontrol)
  48. local item = GUI:GetChildControl(self.view.rewardItem_finish_List, realIndex, "control_finish_item")
  49. local count = GUI:GetChildControl(self.view.rewardItem_finish_List, realIndex, "countFinishTxt")
  50. local info = self.trialsTbl.reward[realIndex + 1]
  51. GUI:Item_setItemId(item, info[1])
  52. GUI:Text_setString(count, info[2])
  53. end
  54. ---创建或者刷新界面数据时调用
  55. function this:Refresh(message)
  56. GUI:setVisible(self.view.exitBtn_task, true)
  57. GUI:Text_setString(self.view.title_task, self.trialsTbl.name[1])
  58. ---@type cfg_repTask_column
  59. local task = SL:GetConfig("cfg_repTask", tonumber(self.trialsTbl.repTarget))
  60. GUI:Text_setString(self.view.taskName_task, task.UItext)
  61. GUI:setVisible(self.view.panel_finish, false)
  62. GUI:setVisible(self.view.countDown_in_copy, false)
  63. --self.taskNum = task.param[2]
  64. GUI:Text_setString(self.view.taskProgress_task, "0/" .. task.param[2])
  65. --GUI:setPosition(self.view.rewardItem_layout, -27, -60)
  66. GUI:setVisible(self.view.rewardItem_layout, true)
  67. GUI:setVisible(self.view.rewardItem_finish_layout, false)
  68. GUI:DataListUpdateData(self.view.rewardItem_List)
  69. GUI:setVisible(self.view.panel_start, true)
  70. self:RefreshBraveState(message or self.args)
  71. end
  72. function this:RefreshBraveState(message)
  73. if self.trialsTbl.id == message["3"] then
  74. self.trialsState = message["1"]
  75. self.trialsNextStateTime = message["2"]
  76. if self.trialsState == 1 then
  77. ---准备阶段
  78. GUI:Text_setString(self.view.text_countdown_tips, "副本开始倒计时:")
  79. GUI:SetControl_time(self.view.countdown_out_copy, self.trialsTbl.prepareTime)
  80. GUI:setVisible(self.view.text_countdown_tips, true)
  81. elseif self.trialsState == 2 then
  82. ---战斗阶段
  83. GUI:setVisible(self.view.text_countdown_tips, false)
  84. local time = (self.trialsNextStateTime - Time.GetServerTime()) / 1000
  85. GUI:SetControl_time(self.view.countDown_in_copy, math.floor(time))
  86. GUI:setVisible(self.view.countDown_in_copy, true)
  87. elseif self.trialsState == 3 then
  88. ---完成阶段
  89. if message["4"] then
  90. GUI:setVisible(self.view.exitBtn_task, false)
  91. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ACTIVITY_COUNT, self.braveType)
  92. else
  93. self:ExitBtnOnClick()
  94. end
  95. end
  96. else
  97. ---前往下一层,刷新副本UI
  98. self.trialsTbl = SL:GetConfig("cfg_rep", message["3"])
  99. self.trialsState = message["1"]
  100. self:Refresh(message)
  101. end
  102. end
  103. ---注册UI事件和服务器消息
  104. function this:RegistEvents()
  105. GUI:AddOnClickEvent(self.view.exitBtn_task, self, self.ExitBtnOnClick)
  106. GUI:AddOnClickEvent(self.view.btn_reward, self, self.RewardBtnOnClick)
  107. GUI:AddOnClickEvent(self.view.btn_next, self, self.NextBtnOnClick)
  108. --SL:RegisterLUAEvent(LUA_EVENT_HPCHANGE, self.RefreshPlayerHp, self)--主角血量改变事件
  109. --SL:RegisterLuaNetMsg(LuaMessageIdToClient.BRAVE_TEST_REWARD, self.BRAVE_TEST_REWARD, self)
  110. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_QUIT_DUPLICATE, self.RES_QUIT_DUPLICATE, self)
  111. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_ACTIVITY_COUNT, self.RES_GET_ACTIVITY_COUNT, self)
  112. end
  113. function this:ExitBtnOnClick()
  114. self.goNextLevel = false
  115. if self.trialsState == 3 then
  116. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_QUIT_DUPLICATE)
  117. else
  118. SL:CommonTipsMessage({ stringTblID=210, callback = function()
  119. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_QUIT_DUPLICATE)
  120. end })
  121. end
  122. end
  123. function this:RewardBtnOnClick()
  124. SL:SendLuaNetMsg(LuaMessageIdToSever.BRAVE_TEST_REWARD)
  125. self:ExitBtnOnClick()
  126. end
  127. ---前往下一层不关闭副本UI
  128. function this:NextBtnOnClick()
  129. self.goNextLevel = true
  130. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE, self.trialsTbl.id + 1)
  131. end
  132. function this:RefreshPlayerHp()
  133. local hp = SL:GetMetaValue("HP")
  134. if hp <= 0 and not self.isDead then
  135. self.isDead = true
  136. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_QUIT_DUPLICATE)
  137. end
  138. end
  139. function this:BRAVE_TEST_REWARD(_, message)
  140. local reward = {}
  141. for i, v in pairs(message) do
  142. reward[tonumber(i)] = tonumber(v)
  143. end
  144. ---延时调用,要不会被地图切换关闭所有界面关掉
  145. SL:ScheduleOnce(0.1, function()
  146. SL:OpenRewardTips(reward,0)
  147. end)
  148. end
  149. function this:RES_QUIT_DUPLICATE()
  150. if not self.goNextLevel then
  151. GUI:UIPanel_Close("dev/outui/BraveTrials/Panel/KLBraveTrialsWindow/KLBraveTrialsWindowPanel")
  152. end
  153. self.goNextLevel = false
  154. self.isDead = false
  155. end
  156. function this:RES_GET_ACTIVITY_COUNT(_, message)
  157. if message["1"] == self.braveType then
  158. GUI:setVisible(self.view.panel_start, false)
  159. GUI:setVisible(self.view.text_countdown_tips, true)
  160. GUI:setVisible(self.view.countDown_in_copy, false)
  161. GUI:Text_setString(self.view.text_countdown_tips, "副本结束倒计时:")
  162. GUI:SetControl_time(self.view.countdown_out_copy, self.trialsTbl.save)
  163. GUI:setVisible(self.view.rewardItem_layout, false)
  164. GUI:setVisible(self.view.rewardItem_finish_layout, true)
  165. GUI:DataListUpdateData(self.view.rewardItem_finish_List)
  166. GUI:setVisible(self.view.panel_finish, true)
  167. ---领奖才会刷新次数,此时次数未减少,用1判断
  168. local goNext = false
  169. if message["2"] > 1 then
  170. goNext = self:CanGoToNextLevel()
  171. end
  172. if goNext then
  173. GUI:setVisible(self.view.btn_next, true)
  174. GUI:setPositionX(self.view.btn_reward, -50)
  175. else
  176. GUI:setVisible(self.view.btn_next, false)
  177. GUI:setPositionX(self.view.btn_reward, 0)
  178. end
  179. end
  180. end
  181. ---判断开服天数等级是否可以前往下一层
  182. function this:CanGoToNextLevel()
  183. local levelInfo = SL:GetConfig("cfg_rep", self.trialsTbl.id + 1)
  184. if levelInfo then
  185. local open_server_day = 0
  186. if SL:GetEnterRoleRes() and SL:GetEnterRoleRes().openServerTime then
  187. local defTime = os.time() - SL:GetEnterRoleRes().openServerTime / 1000
  188. if defTime > 0 then
  189. open_server_day = math.ceil(defTime / 86400)
  190. end
  191. end
  192. if open_server_day >= levelInfo.startDay then
  193. local player_level = SL:GetMetaValue("LEVEL")
  194. if player_level >= levelInfo.level[1] and player_level <= levelInfo.level[2] then
  195. return true
  196. end
  197. end
  198. end
  199. return false
  200. end
  201. function this:SetVisible(isVisible)
  202. GUI:setVisible(self.view.root,isVisible)
  203. end
  204. function this:Close()
  205. InfoManager.copActivityInfo.hideTask = false
  206. end
  207. return this