LoadingState.lua 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. local LoadingState = class("LoadingState", require("StateBase"))
  2. function LoadingState:Enter(sceneType, param1)
  3. ManagerContainer.GoPoolMgr:Dispose()
  4. ManagerContainer.UIStoryMgr:Dispose()
  5. ManagerContainer.StoryMgr:ExpectedStopCurStoryChapter()
  6. ManagerContainer.LuaUIMgr:CloseInputMask()
  7. self.sceneType = sceneType
  8. self.param = param1
  9. self.bStarted = false
  10. if self.sceneType == SceneType.TowerBattleScene then
  11. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIDojoMatch) then
  12. ManagerContainer.LuaUIMgr:CloseAllPagesExceptId(Enum.UIPageName.UIDojoMatch)
  13. elseif ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UILoading) then
  14. ManagerContainer.LuaUIMgr:CloseAllPagesExceptId(Enum.UIPageName.UILoading)
  15. end
  16. else
  17. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UILanuch) then
  18. ManagerContainer.LuaUIMgr:CloseAllPagesExceptId(Enum.UIPageName.UILanuch)
  19. elseif ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UILoading) then
  20. ManagerContainer.LuaUIMgr:CloseAllPagesExceptId(Enum.UIPageName.UILoading)
  21. end
  22. end
  23. self:SyncDataToActorData()
  24. end
  25. function LoadingState:Update()
  26. if self.bStarted == false and ManagerContainer.LuaGameMgr.loadingPageOk then
  27. self:BeginLoading()
  28. end
  29. end
  30. function LoadingState:Exit()
  31. end
  32. function LoadingState:GetTask()
  33. return nil
  34. end
  35. function LoadingState:BeginLoading()
  36. self.bStarted = true
  37. if self.sceneType == SceneType.LoginScene then
  38. elseif self.sceneType == SceneType.CreateRoleScene then
  39. ManagerContainer.LuaGameMgr:PreloadCreateRoleScene()
  40. elseif self.sceneType == SceneType.NormalBattleScene then
  41. local dataInitedOver = ManagerContainer.DataMgr.UserData:IsInitedOver()
  42. if dataInitedOver then
  43. self:StartNormalBattle()
  44. end
  45. elseif self.sceneType == SceneType.GuildLobbyScene then
  46. ManagerContainer.LuaGameMgr:PreloadGuildLobby();
  47. elseif self.sceneType == SceneType.TowerBattleScene then
  48. local mode = self.param["mode"]
  49. local battleEndConds = self.param["battleEndConds"]
  50. local ourActors = self.param["ourActors"]
  51. local enemyActors = self.param["enemyActors"]
  52. local sceneName = self.param["sceneName"]
  53. local maxFightingTime = self.param["maxFightingTime"]
  54. local OurMarks = nil
  55. local EnemyMarks = nil
  56. local IsPresspoint = false
  57. local nPresspoint = 0
  58. if not maxFightingTime then
  59. maxFightingTime = 0
  60. end
  61. if nil ~= self.param['OurBattleMarks'] then
  62. OurMarks = self.param['OurBattleMarks']
  63. end
  64. if nil ~= self.param['EnemyBattleMarks'] then
  65. EnemyMarks = self.param['EnemyBattleMarks']
  66. end
  67. if nil ~= self.param['IsPresspoint'] then
  68. IsPresspoint = self.param['IsPresspoint']
  69. end
  70. if nil ~= self.param['nPresspoint'] then
  71. nPresspoint = self.param['nPresspoint']
  72. end
  73. ManagerContainer.LuaGameMgr:PreloadVersusBattle(mode, ourActors, enemyActors, sceneName, maxFightingTime, battleEndConds,OurMarks,EnemyMarks,IsPresspoint,nPresspoint);
  74. LuaBattleBridge.SetLuaBattleMgr(BattleMode.Versus, ManagerContainer.LuaDojoMgr)
  75. elseif self.sceneType == SceneType.BossBattleScene then
  76. self.actors = self.param["actors"]
  77. self.bossId = self.param["bossId"]
  78. self.sceneId = self.param["sceneId"]
  79. self.bossMode = self.param["bossMode"]
  80. self.battleEndConds = self.param["battleEndConds"]
  81. if self.bossMode == BattleSubMode.WorldBoss then
  82. ManagerContainer.LuaGameMgr:PreloadBossBattle(self.actors,self.bossId,self.sceneId,self.battleEndConds)
  83. elseif self.bossMode == BattleSubMode.NewbieBoss then
  84. local fellows = ManagerContainer.LuaGameMgr:StartNewbieBossBattle(self.sceneId,ManagerContainer.DataMgr.UserData:GetSex())
  85. ManagerContainer.LuaGameMgr.newbieActors = fellows
  86. end
  87. LuaBattleBridge.SetLuaBattleMgr(BattleMode.Boss, ManagerContainer.LuaBossBattleMgr)
  88. elseif self.sceneType == SceneType.TimeBattleScene then
  89. local mode = self.param["mode"]
  90. local maxFightingTime = self.param["maxFightingTime"]
  91. local sceneName = self.param["sceneName"]
  92. local bgmMusic = self.param["bgmMusic"]
  93. local ourActors = self.param["ourActors"]
  94. local enemyActors = self.param["enemyActors"]
  95. local battleEndConds = self.param["battleEndConds"]
  96. local serverActorData = self.param["serverActorData"]
  97. local battleRecordStr = self.param["battleRecordStr"]
  98. local battleFactors = self.param["battleFactors"]
  99. local replayername = self.param["replayername"]
  100. local RestoreSp = 0
  101. local OurMarks = nil
  102. local EnemyMarks = nil
  103. --LogError("=========================="..battleRecordStr)
  104. if nil ~= self.param['RestoreSp'] then
  105. RestoreSp = self.param['RestoreSp']
  106. end
  107. if nil ~= self.param['OurBattleMarks'] then
  108. OurMarks = self.param['OurBattleMarks']
  109. end
  110. if nil ~= self.param['EnemyBattleMarks'] then
  111. EnemyMarks = self.param['EnemyBattleMarks']
  112. end
  113. if ourActors ~= nil and enemyActors ~= nil then
  114. if battleFactors == nil then
  115. battleFactors = System.Array.CreateInstance(Enum.TypeInfo.ValType, 0)
  116. end
  117. ManagerContainer.LuaGameMgr:PreloadTimeBattle(ManagerContainer.LuaTimeBattleMgr, mode, maxFightingTime,sceneName,bgmMusic,ourActors,enemyActors,serverActorData,battleEndConds,battleFactors,RestoreSp,OurMarks,EnemyMarks)
  118. elseif battleRecordStr ~= nil then
  119. ManagerContainer.LuaGameMgr:ReplayTimeBattle(ManagerContainer.LuaTimeBattleMgr, mode, maxFightingTime,sceneName,bgmMusic,battleRecordStr)
  120. LuaBattleBridge.SetReplayHeroActorName(replayername)
  121. end
  122. end
  123. end
  124. function LoadingState:StartNormalBattle()
  125. ManagerContainer.DataMgr.UserData:RefreshAddPointAttr()
  126. ManagerContainer.DataMgr.PartnerData:InitPartnerPointAttr()
  127. ManagerContainer.DataMgr.UserData:InitHeroAttrFromBattle()
  128. ManagerContainer.DataMgr.PartnerData:InitPartnerAttrFromBattle()
  129. local teamData = ManagerContainer.DataMgr.UserData:GetTeamData(true);
  130. ManagerContainer.LuaGameMgr:PreloadFellowsModel()
  131. ManagerContainer.LuaGameMgr:PreloadBattle(teamData);
  132. LuaBattleBridge.SetLuaBattleMgr(BattleMode.Normal, ManagerContainer.LuaBattleMgr)
  133. end
  134. --- 只同步到当前玩家已创建的ActorData
  135. function LoadingState:SyncDataToActorData()
  136. local actorData = ManagerContainer.LuaActorDataMgr:GetActorData(true, 0)
  137. if actorData then
  138. self:SyncHeroDataToActorData(ManagerContainer.DataMgr.UserData:GetMainRoleData(), actorData)
  139. end
  140. local list = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  141. if list ~= nil then
  142. for _,v in pairs(list) do
  143. if v.owned then
  144. actorData = ManagerContainer.LuaActorDataMgr:GetActorData(false, v.configId)
  145. if actorData then
  146. self:SyncHeroDataToActorData(v, actorData)
  147. end
  148. end
  149. end
  150. end
  151. end
  152. function LoadingState:SyncHeroDataToActorData(heroData, actorData)
  153. if not heroData then return end
  154. if not actorData then return end
  155. -- 同步技能
  156. local skillData = heroData.skillData
  157. if skillData then
  158. local skillPrams = skillData:GetUsedSkillParams()
  159. skillPrams = CommonUtil.ReplaceBattleSkillBySkillEquip(heroData, skillPrams)
  160. actorData:RefreshSkills(skillPrams)
  161. end
  162. end
  163. return LoadingState