源战役客户端
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

188 lignes
5.8 KiB

il y a 4 semaines
  1. require("game.relive.ReliveView")
  2. require("game.relive.ReliveStrengthenItem")
  3. require("game.guildWar.GuildWarReliveTipView")
  4. require("game.arena.leagueWar.views.LeagueWarReliveTipView")
  5. ReliveController = ReliveController or BaseClass(BaseController)
  6. function ReliveController:__init( )
  7. ReliveController.Instance = self
  8. self.reliveView = nil
  9. self:RegisterProtocals()
  10. self:RegisterEvents()
  11. self.hide_relive_view = false
  12. self.request_relive_lase_time = -3 --上一次请求复活的时间
  13. self.request_relive_type = -3 --上一次请求复活的类型
  14. end
  15. function ReliveController:RegisterProtocals( )
  16. self:RegisterProtocal(20004, "handler20004"); --死亡复活
  17. end
  18. function ReliveController:RegisterEvents( )
  19. local function onShowReliveWindow(type)
  20. -- print("huangcong:ReliveController [start:23] :", type)
  21. self:ShowReliveWindow(type)
  22. end
  23. GlobalEventSystem:Bind(EventName.SHOWRELIVEWINDOW, onShowReliveWindow)
  24. local function onReLiveRequest(revive_mode, is_force)
  25. self:ReLiveRequest(revive_mode, is_force)
  26. end
  27. GlobalEventSystem:Bind(EventName.RELIVEBYTYPE,onReLiveRequest)
  28. --切场景到安全场景时自动关闭复活界面
  29. -- local function scene_start_func ()
  30. -- if self.reliveView and self.reliveView:HasOpen() then
  31. -- self.reliveView:Close()
  32. -- -- local main_role_vo = RoleManager.Instance:GetMainRoleVo()
  33. -- -- main_role_vo:ChangeVar("hp", main_role_vo.maxHp)
  34. -- -- Scene.Instance:GetMainRole():Revived()
  35. -- end
  36. -- end
  37. -- GlobalEventSystem:Bind(SceneEventType.SCENE_CHANGED, scene_start_func)
  38. local function func_hide_tips()
  39. self.hide_tip_flag = true
  40. end
  41. GlobalEventSystem:Bind(EventName.HIDE_RELIVE_TIP, func_hide_tips)
  42. local function func_show_tips()
  43. self.hide_tip_flag = nil
  44. end
  45. GlobalEventSystem:Bind(EventName.SHOW_RELIVE_TIP, func_show_tips)
  46. local function func_close_tips()
  47. -- SceneManager.Instance:ChangeVar("next_relive_time",0) --通过这个事件去关掉主界面的复活倒计时
  48. if self.reliveView and self.reliveView:HasOpen() then
  49. self.reliveView:Close()
  50. end
  51. end
  52. GlobalEventSystem:Bind(EventName.CLOSERELIVEWINDOW, func_close_tips)
  53. end
  54. function ReliveController:__delete( )
  55. -- body
  56. end
  57. function ReliveController:ReLiveRequest( revive_mode, is_force )
  58. if is_force or self.request_relive_type ~= revive_mode or Status.NowTime - self.request_relive_lase_time > 3 then
  59. self.request_relive_lase_time = Status.NowTime
  60. self.request_relive_type = revive_mode
  61. self:SendFmtToGame(20004, "c", revive_mode)
  62. end
  63. end
  64. function ReliveController:handler20004( )
  65. local type,flag = self:ReadFmt("ci")
  66. -- type 复活方式:
  67. -- 1彩钻原地复活
  68. -- 2绑定彩钻原地复活
  69. -- 3回城复活
  70. -- 5原地满血复活
  71. -- 6复活成幽灵状态
  72. -- 7从幽灵状态复活
  73. if flag == 1 then
  74. if not self.hide_tip_flag then
  75. if type == 6 then
  76. Message.show("你被击败")
  77. else
  78. Message.show("复活成功")
  79. end
  80. end
  81. if self.reliveView then
  82. self.reliveView:Close()
  83. end
  84. -- SceneManager.Instance:ChangeVar("next_relive_time",0) ----通过这个事件去关掉主界面的复活倒计时
  85. GlobalEventSystem:Fire(EventName.RELIVE_SUCC, type)
  86. else
  87. ErrorCodeShow(flag)
  88. end
  89. end
  90. function ReliveController:ShowReliveWindow( rType )
  91. local sceneMgr = SceneManager:getInstance()
  92. if rType == 0 then --打开
  93. if not sceneMgr:maskReliveViewScene() then --是否展示复活界面的场景
  94. self:OpenReliveView()
  95. end
  96. elseif rType == 1 then --关闭
  97. if self.reliveView then
  98. self.reliveView:Close()
  99. end
  100. end
  101. end
  102. function ReliveController:OpenReliveView()
  103. if self.delay_open_relive_view_id then
  104. GlobalTimerQuest:CancelQuest(self.delay_open_relive_view_id)
  105. self.delay_open_relive_view_id = nil
  106. end
  107. if self.reliveView == nil then
  108. if self.delay_open_relive_view_id == nil then
  109. local delay_handler = function ( ... )
  110. --再次确认主角是否死亡,对于死亡后要播放死亡动画再死亡
  111. local role = Scene:getInstance():GetMainRole()
  112. -- if role and role.vo and role.vo.hp==0 then--连续复活几次HP会大于0
  113. if self.reliveView == nil then
  114. self.reliveView = ReliveView.New()
  115. end
  116. self.reliveView:Open()
  117. if self.delay_open_relive_view_id then
  118. GlobalTimerQuest:CancelQuest(self.delay_open_relive_view_id)
  119. self.delay_open_relive_view_id = nil
  120. end
  121. -- end
  122. end
  123. self.delay_open_relive_view_id = setTimeout(delay_handler,RoleManager:getInstance():GetRoleDeadDoActionTime())
  124. end
  125. end
  126. end
  127. function ReliveController:OpenGuildWarReliveView()
  128. if self.reliveView == nil then
  129. if self.delay_open_war_relive_view_id == nil then
  130. local delay_handler = function ( ... )
  131. self.delay_open_war_relive_view_id = nil
  132. --再次确认主角是否死亡,对于死亡后马上复活的情况,定时器有bug
  133. local role = Scene:getInstance():GetMainRole()
  134. if role and role.vo and role.vo.hp==0 then
  135. if self.reliveView == nil then
  136. self.reliveView = GuildWarReliveTipView.New()
  137. end
  138. self.reliveView:Open()
  139. end
  140. end
  141. self.delay_open_war_relive_view_id = GlobalTimerQuest:AddDelayQuest(delay_handler, 0.5)
  142. end
  143. end
  144. end
  145. function ReliveController:OpenLeagueWarReliveView()
  146. if self.reliveView == nil then
  147. if self.delay_open_league_relive_view_id == nil then
  148. local delay_handler = function ()
  149. self.delay_open_league_relive_view_id = nil
  150. local role = Scene:getInstance():GetMainRole()
  151. if role and role.vo and role.vo.hp==0 then
  152. if self.reliveView == nil then
  153. self.reliveView = LeagueWarReliveTipView.New()
  154. end
  155. self.reliveView:Open()
  156. end
  157. end
  158. self.delay_open_league_relive_view_id = GlobalTimerQuest:AddDelayQuest(delay_handler, 1)
  159. end
  160. end
  161. end
  162. function ReliveController:OpenPkBattleReliveView()
  163. if self.reliveView == nil then
  164. self.reliveView = PkBattleReliveView.New()
  165. end
  166. self.reliveView:Open()
  167. end