LuaDojoMgr.lua 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. local LuaDojoMgr = class("LuaDojoMgr")
  2. function LuaDojoMgr:ctor()
  3. self.battleSubMode = BattleSubMode.None
  4. self:RegisterNetEvents();
  5. end
  6. function LuaDojoMgr:Destroy()
  7. if tolua.getpeer(self) ~= nil then
  8. tolua.setpeer(self, nil)
  9. end
  10. end
  11. function LuaDojoMgr:RegisterNetEvents()
  12. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self, self.PvpClimbingShutBattle)
  13. end
  14. function LuaDojoMgr:UnRegisterNetEvents()
  15. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self, self.PvpClimbingShutBattle)
  16. end
  17. function LuaDojoMgr:Enter(mode)
  18. if mode == nil then
  19. LogError("请设置VersusBattle的战斗类型")
  20. return
  21. end
  22. self.battleSubMode = mode
  23. ManagerContainer.LuaGameMgr:SetGameSpeed(ManagerContainer.LuaGameMgr.GameSpeed)
  24. if self.battleSubMode == BattleSubMode.Voyage then
  25. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.DOJO_CHALLENGE_RESULT_CHANGED, self, self.OnChallengeResultChanged)
  26. end
  27. end
  28. function LuaDojoMgr:Exit()
  29. if self.battleSubMode == BattleSubMode.Voyage then
  30. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.DOJO_CHALLENGE_RESULT_CHANGED, self, self.OnChallengeResultChanged)
  31. end
  32. end
  33. function LuaDojoMgr:OnChallengeResultChanged()
  34. if self.battleSubMode == BattleSubMode.Voyage then
  35. local win = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleWin()
  36. local scores = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleScores()
  37. local rewards = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleRewards()
  38. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleResult, {win, scores, rewards, 'VoyageResultTips', self.ShowDojoExit, self})
  39. end
  40. end
  41. function LuaDojoMgr:OnStartingFight()
  42. local data = {}
  43. data[1] = BattleMode.Versus
  44. data[2] = self.battleSubMode
  45. if self.battleSubMode == BattleSubMode.Arena then
  46. data[3] = ManagerContainer.DataMgr.ArenaData:GetMatchFighterName()
  47. data[4] = ManagerContainer.DataMgr.ArenaData:GetOurMembers()
  48. data[5] = ManagerContainer.DataMgr.ArenaData:GetEnemyMembers()
  49. elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
  50. data[3] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetMatchFighterName()
  51. data[4] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetOurMembers()
  52. data[5] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetEnemyMembers()
  53. data[6] = true
  54. data[7] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetLimitedTime()
  55. elseif self.battleSubMode == BattleSubMode.HundredDojo then
  56. data[3] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetMatchFighterName()
  57. data[4] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetOurMembers()
  58. data[5] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetEnemyMembers()
  59. data[6] = true
  60. data[7] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetLimitedTime()
  61. elseif self.battleSubMode == BattleSubMode.Voyage then
  62. data[3] = ManagerContainer.DataMgr.VoyageDataMgr:GetMatchFighterName()
  63. data[4] = ManagerContainer.DataMgr.VoyageDataMgr:GetOurMembers()
  64. data[5] = ManagerContainer.DataMgr.VoyageDataMgr:GetEnemyMembers()
  65. data[6] = true
  66. data[7] = ManagerContainer.DataMgr.VoyageDataMgr:GetLimitedTime()
  67. elseif self.battleSubMode == BattleSubMode.GvG then
  68. local guildWarDataMgr = ManagerContainer.DataMgr.GuildWarDataMgr
  69. if guildWarDataMgr then
  70. data[3] = guildWarDataMgr:GetMatchFighterName()
  71. data[4] = guildWarDataMgr:GetOurMembers()
  72. data[5] = guildWarDataMgr:GetEnemyMembers()
  73. data[6] = true
  74. data[7] = guildWarDataMgr:GetLimitedTime()
  75. else
  76. data[6] = true
  77. data[7] = 0
  78. end
  79. ManagerContainer.DataMgr.GuildWarDataMgr:StartStayBatting()
  80. end
  81. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojoBattle, data)
  82. end
  83. function LuaDojoMgr:OnBattleWin()
  84. ManagerContainer.LuaGameMgr:SetGameSpeed(1)
  85. if self.battleSubMode == BattleSubMode.Arena then
  86. ManagerContainer.DataMgr.ArenaData:BattleEnd(1)
  87. elseif self.battleSubMode == BattleSubMode.HundredDojo then
  88. ManagerContainer.DataMgr.HundredDojoDataMgr:BattleEnd(1)
  89. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {1, self.ShowDojoExit, self})
  90. elseif self.battleSubMode == BattleSubMode.Voyage then
  91. ManagerContainer.DataMgr.VoyageDataMgr:BattleEnd(1)
  92. elseif self.battleSubMode == BattleSubMode.GvG then
  93. ManagerContainer.DataMgr.GuildWarDataMgr:BattleEnd(1)
  94. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {1, self.ShowDojoExit, self})
  95. elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
  96. ManagerContainer.DataMgr.PeakTowerDataMgr:BattleEnd(1)
  97. end
  98. end
  99. function LuaDojoMgr:OnBattleFailed()
  100. ManagerContainer.LuaGameMgr:SetGameSpeed(1)
  101. if self.battleSubMode == BattleSubMode.Arena then
  102. ManagerContainer.DataMgr.ArenaData:BattleEnd(0)
  103. elseif self.battleSubMode == BattleSubMode.HundredDojo then
  104. ManagerContainer.DataMgr.HundredDojoDataMgr:BattleEnd(0)
  105. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {0, self.ShowDojoExit, self})
  106. elseif self.battleSubMode == BattleSubMode.Voyage then
  107. ManagerContainer.DataMgr.VoyageDataMgr:BattleEnd(0)
  108. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleResult, {0, nil, nil, 'VoyageResultTips', self.ShowDojoExit, self})
  109. elseif self.battleSubMode == BattleSubMode.GvG then
  110. ManagerContainer.DataMgr.GuildWarDataMgr:BattleEnd(0)
  111. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {0, self.ShowDojoExit, self})
  112. elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
  113. --ManagerContainer.DataMgr.PeakTowerDataMgr:BattleEnd(0)
  114. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerBattleFailed,Enum.UIPageName.UIClimbingTower)
  115. end
  116. end
  117. function LuaDojoMgr:OnBattleEnd()
  118. ManagerContainer.LuaGameMgr:SetGameSpeed(1)
  119. end
  120. --关闭结算界面
  121. function LuaDojoMgr:CloseBattlePage()
  122. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattle)
  123. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleStatistics)
  124. if self.battleSubMode == BattleSubMode.Arena then
  125. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattleFail)
  126. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattleWin)
  127. elseif self.battleSubMode == BattleSubMode.HundredDojo then
  128. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleSimpleResult)
  129. elseif self.battleSubMode == BattleSubMode.Voyage then
  130. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleResult)
  131. elseif self.battleSubMode == BattleSubMode.GvG then
  132. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleSimpleResult)
  133. end
  134. end
  135. function LuaDojoMgr:ShowDojoExit()
  136. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojoExit)
  137. end
  138. function LuaDojoMgr:BackDojoMain()
  139. self:CloseBattlePage();
  140. if self.battleSubMode == BattleSubMode.Arena then
  141. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojo2D, nil, Enum.UIPageName.UIMainCity1)
  142. elseif self.battleSubMode == BattleSubMode.HundredDojo then
  143. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIHundredDojo, nil, Enum.UIPageName.UIMainCity1)
  144. elseif self.battleSubMode == BattleSubMode.Voyage then
  145. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIVoyage, nil, Enum.UIPageName.UIMainCity1)
  146. elseif self.battleSubMode == BattleSubMode.GvG then
  147. local data = require('ExecuteSequenceData'):new()
  148. data:AppendUIListener(Enum.UIPageName.UIMain, UIEventNames.UI_FILLCONTENT_COMPELETED, 5)
  149. data:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIMain)
  150. data:AppendUIListener(Enum.UIPageName.UIMainCity1, UIEventNames.UI_FILLCONTENT_COMPELETED, 5)
  151. data:AppendUIViewFuncAfterListener(false, Enum.UIPageName.UIMain, 'ChangePageMsg', Enum.MainViewPageType.Town)
  152. data:AppendFunc(false, nil, function (sequenceData)
  153. if ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState() then
  154. sequenceData:AppendUIListener(Enum.UIPageName.UIGuildWarMatchMap, UIEventNames.UI_PAGE_IN_END_NTF, 5)
  155. sequenceData:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIGuildWarMatchMap)
  156. sequenceData:AppendFunc(false, nil, function (sequenceData1)
  157. if ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState() then
  158. local attackBattleIdx = ManagerContainer.DataMgr.GuildWarDataMgr:GetLastAttackBattleIdx()
  159. if attackBattleIdx then
  160. sequenceData1:AppendUIListener(Enum.UIPageName.UIGuildWar, UIEventNames.UI_PAGE_IN_END_NTF, 5)
  161. sequenceData1:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIGuildWar,attackBattleIdx)
  162. end
  163. end
  164. end, sequenceData)
  165. end
  166. end, data)
  167. ManagerContainer.ExecuteSequenceMgr:Execute(data)
  168. end
  169. self:ShutBattle()
  170. end
  171. function LuaDojoMgr:ShutBattle()
  172. ManagerContainer.LuaGameMgr:ShutDownBattle()
  173. ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.IdleState.stateId)
  174. end
  175. function LuaDojoMgr:PvpClimbingShutBattle(openPageId,param)
  176. self:CloseBattlePage()
  177. if self.battleSubMode == BattleSubMode.PvPClimbinglower then
  178. self:ShutBattle()
  179. if openPageId ~= nil and openPageId > 0 then
  180. ManagerContainer.LuaUIMgr:Open(openPageId,param, Enum.UIPageName.UIMainCity1)
  181. end
  182. LuaBattleBridge.CloseBgm()
  183. end
  184. end
  185. -- 显示战场结束转场
  186. function LuaDojoMgr:ShowBattleEndInterlude()
  187. end
  188. --pvp压制特效
  189. function LuaDojoMgr:OnShowPvpPressPoint()
  190. if self.chatHideTimer then
  191. ManagerContainer.LuaTimerMgr:RemoveTimer(chatHideTimer)
  192. self.chatHideTimer = nil
  193. end
  194. ManagerContainer.LuaTimerMgr:AddTimer(2000, 1,self,self.OnHidePvpPressPointTimer,nil);
  195. end
  196. function LuaDojoMgr:OnHidePvpPressPointTimer()
  197. self.chatHideTimer = ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHOW_PVP_PRESSPOINT,true);
  198. end
  199. function LuaDojoMgr:OnShowBossBuff(teamSide,actorId,isBoss,buffIcon,num)
  200. if isBoss then
  201. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Buff,buffIcon,num)
  202. else
  203. if teamSide == 0 then --我方
  204. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Player_Buff,actorId, buffIcon,num)
  205. end
  206. end
  207. end
  208. function LuaDojoMgr:OnRemoveBossBuff(teamSide,actorId,isBoss,buffIcon)
  209. if isBoss then
  210. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Remove_Buff,buffIcon)
  211. else
  212. if teamSide == 0 then --我方
  213. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Remove_Player_Buff, actorId, buffIcon)
  214. end
  215. end
  216. end
  217. function LuaDojoMgr:OnLoadBegin()
  218. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Begin);
  219. end
  220. function LuaDojoMgr:OnLoadProgress(progress)
  221. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Progress,progress);
  222. end
  223. function LuaDojoMgr:OnLoadComplete()
  224. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Complete);
  225. end
  226. function LuaDojoMgr:OnFighterLifeChanged(isBoss,actorId,life,maxLife,teamSide)
  227. if isBoss then
  228. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Life,life,maxLife)
  229. else
  230. if teamSide == 0 then
  231. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Fighter_Life,actorId,life,maxLife)
  232. else
  233. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Enemy_Fighter_Life,actorId,life,maxLife)
  234. end
  235. end
  236. end
  237. function LuaDojoMgr:OnFighterEnergyChanged(actorId,sp,maxSp,teamSide)
  238. if teamSide == 0 then
  239. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Fighter_Sp,actorId,sp,maxSp)
  240. else
  241. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Enemy_Fighter_Sp,actorId,sp,maxSp)
  242. end
  243. end
  244. function LuaDojoMgr:OnFighterCastSkill(skillParam)
  245. end
  246. function LuaDojoMgr:RefreshStatistics()
  247. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_BattleStatistics)
  248. end
  249. function LuaDojoMgr:OnFightingStart()
  250. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_FIGHTING_START)
  251. end
  252. return LuaDojoMgr;