KLDevilCopyTaskProgressPanel.lua 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. ---@class KLDevilCopyTaskProgressPanel:UIKmlLuaPanelBase
  2. ---@field view KLDevilCopyTaskProgressPanelView
  3. ---@field expItem KLItemItem
  4. local KLDevilCopyTaskProgressPanel = class(UIKmlLuaPanelBase)
  5. local this =KLDevilCopyTaskProgressPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. SL:KeepOpenPanel("KLDevilCopyTaskProgressPanel",true)
  9. end
  10. ---创建或者刷新界面数据时调用
  11. function this:Refresh()
  12. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  13. self:RefreshPrepareStage(nil,self.args)
  14. SL:SetMetaValue(EMetaVarSetKey.SET_ISNOTCHANGEPKMODE,true)
  15. SL:SetMetaValue(EMetaVarSetKey.SET_PKMODE,EPKMode.Peace)
  16. end
  17. ---注册UI事件和服务器消息
  18. function this:RegistEvents()
  19. SL:RegisterLuaNetMsg(LuaMessageIdToClient.DEVIL_SQUARE_STATE,self.RefreshPrepareStage,self)
  20. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_DEVIL_SQUARE_TASK,self.RefreshFightStage,self)
  21. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_QUIT_DUPLICATE,self.RES_QUIT_SUCCESS,self)
  22. GUI:AddOnClickEvent(self.view.openActivityBtn,self,self.OnCliCkOpenActivityBtn)
  23. GUI:AddOnClickEvent(self.view.desBtn,self,self.OnCliCkDesBtn)
  24. GUI:AddOnClickEvent(self.view.exitBtn,self,self.OnCliCkExitBtn)
  25. end
  26. function this:RefreshPrepareStage(id,message)
  27. self.stage = message["1"]
  28. local countdown = tonumber(message["2"])
  29. local cfgId = tonumber(message["3"])
  30. ---@type cfg_rep_column
  31. local tbl = SL:GetConfig("cfg_rep",cfgId,"id")
  32. GUI:Text_setString(self.view.title,"恶魔广场第".. tbl.repLevel .."层")
  33. countdown = countdown-SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME)
  34. self.countdown = math.modf(countdown/1000)
  35. GUI:setVisible(self.view.prepareRoot,self.stage == 1)
  36. GUI:setVisible(self.view.endTime,self.stage == 2)
  37. if self.stage == 1 then
  38. ---@type cfg_repGlobal_column
  39. local tbl = SL:GetConfig("cfg_repGlobal",10001002,"id")
  40. local waitTime = tonumber(tbl.value)
  41. local isChange = false
  42. if waitTime < self.countdown then
  43. GUI:Text_setString(self.view.openDes,"当前处于准备阶段")
  44. GUI:setVisible(self.view.openActivityBtn,false)
  45. else
  46. GUI:Text_setString(self.view.openDes,"战斗即将开始做好准备")
  47. GUI:setVisible(self.view.openActivityBtn,true)
  48. end
  49. local str = ""
  50. self.timer = SL:Schedule(self.timer,0,1,self.countdown,function()
  51. self.countdown = self.countdown - 1
  52. if waitTime < self.countdown then
  53. if not isChange then
  54. str = "后开启"
  55. GUI:Text_setString(self.view.openDes,"当前处于准备阶段")
  56. GUI:setVisible(self.view.openActivityBtn,false)
  57. isChange = true
  58. end
  59. elseif waitTime == self.countdown then
  60. str = "秒后开启副本"
  61. GUI:Text_setString(self.view.openDes,"战斗即将开始做好准备")
  62. GUI:setVisible(self.view.openActivityBtn,true)
  63. end
  64. GUI:Text_setString(self.view.openTime,GUIUtil.FormatTimeMS(self.countdown)..GUIUtil.GetColorText(str,"#1add1f"))
  65. if self.countdown <=0 then
  66. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_STATE,EDuplicateType.StartCopy)
  67. end
  68. end)
  69. elseif self.stage == 2 then
  70. self.timer = SL:Schedule(self.timer,0,0.9,self.countdown,function()
  71. self.countdown = self.countdown - 1
  72. GUI:Text_setString(self.view.endTime,GUIUtil.FormatTimeMS(self.countdown))
  73. if self.countdown <= 0 and self.timer then
  74. SL:UnSchedule(self.timer)
  75. end
  76. if self.countdown <=0 then
  77. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_QUIT_DUPLICATE)
  78. end
  79. end)
  80. end
  81. end
  82. function this:RefreshFightStage(id,message)
  83. GUI:setVisible(self.view.fightRoot,self.stage == 2)
  84. if self.stage == 2 then
  85. self:RefreshReward(message.rewardCount)
  86. GUI:Text_setString(self.view.waveNumber,"第"..message.wave.."波")
  87. GUI:Text_setString(self.view.taskCount,"<color=#ff2323>"..message.nowCount .. "</color>/"..message.totalCount)
  88. GUI:Text_setString(self.view.score,tostring(GUIUtil.FormatNumber(message.score,true)))
  89. end
  90. end
  91. function this:RES_QUIT_SUCCESS(id,message)
  92. ---@type cfg_rep_column
  93. local tbl = SL:GetConfig("cfg_rep",message,"id")
  94. if tbl.type == EActivityType.DevilSquare then
  95. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLDevilCopyTaskProgress/KLDevilCopyTaskProgressPanel")
  96. end
  97. end
  98. function this:RefreshReward(count)
  99. if self.expItem then
  100. self.expItem:RefreshItem(10080001,count)
  101. else
  102. self.expItem = GUI:UIPanel_Open("dev/outui/Activity/Item/KLItem/KLItemItem",self.view.rewardModel,self,{cfgId = 10080001,count = count,width = 50,height=50},true)
  103. end
  104. end
  105. function this:OnCliCkOpenActivityBtn()
  106. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_STATE,EDuplicateType.StartCopy)
  107. end
  108. function this:OnCliCkDesBtn()
  109. local des = "1、开启时间:从1:00开始,每2小时开启一场一天总开启12场。\n2、不同等级可进入不同层恶魔广场,每次进入恶魔广场需消耗对应数量的恶魔通行证。\n3、恶魔广场内怪物密集、刷新频率高、击杀怪物经验多,此副本内挂机打怪可获得大量经验。\n4.恶魔广场可组队进入,击杀怪物均分经验。\n5.组队进入恶魔广场后,击杀怪物可获得积分,结算时根据积分可获得额外奖励。\n6.根据积分数量对组队成员进行排名,恶魔广场结算时根据排名前三名可获得额外奖励。"
  110. GUI:UIPanel_Open("dev/outui/Activity/Panel/KLDescribeDetail/KLDescribeDetailPanel",nil,nil,{title="恶魔广场",content=des})
  111. end
  112. function this:OnCliCkExitBtn()
  113. local data = {content="离开副本将丢失进度,是否退出",okFunc=function()
  114. --请求退出副本
  115. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_QUIT_DUPLICATE)
  116. end}
  117. GUI:UIPanel_Open("dev/outui/Activity/Panel/KLSure/KLSurePanel",nil,nil,data)
  118. end
  119. function this:SetVisible(isVisible)
  120. GUI:setVisible(self.view.root,isVisible)
  121. end
  122. function this:Close()
  123. if self.timer then
  124. SL:UnSchedule(self.timer)
  125. self.timer = nil
  126. end
  127. InfoManager.copActivityInfo.hideTask = false
  128. ---@type KLUILeftUpPanel
  129. local panel = GUI:GetUI("dev/ui/MainUI/Panel/KLUILeftUp/KLUILeftUpPanel")
  130. if panel then
  131. panel:OnClickTaskToggle(nil,nil,{true})
  132. end
  133. SL:SetMetaValue(EMetaVarSetKey.SET_ISNOTCHANGEPKMODE,false)
  134. SL:SetMetaValue(EMetaVarSetKey.SET_PKMODE,EPKMode.Peace)
  135. end
  136. return this