ClimbingTowerDataMgr.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. local ClimbingTowerDataMgr = class("ClimbingTowerDataMgr",require("DataBase"))
  2. local ClimbingTowerLevelData = require("ClimbingTower/ClimbingTowerLevelData")
  3. local ClimbingTowerRankData = require("ClimbingTower/ClimbingTowerRankData")
  4. function ClimbingTowerDataMgr:ctor()
  5. self.curChallengeLevel = 1 --当前需要挑战的关卡
  6. self.lastPassedTime = 0
  7. self.levels = nil
  8. self.ranks = nil
  9. self.rankPlayerIds = nil
  10. self.showLevels = nil
  11. self.selfRank = 10000
  12. self.requested = false
  13. self.curMaxFightingTime = 0
  14. self.curEnterBattleTime = 0
  15. self.battleEndCondList = nil
  16. self.bInited = false
  17. self.towerMode = 0 -- 0 原来的模式 1 无尽模式
  18. end
  19. function ClimbingTowerDataMgr:Clear()
  20. self.bInited = false
  21. self.requested = false
  22. self.levels = nil
  23. self.ranks = nil
  24. self.rankPlayerIds = nil
  25. self.showLevels = nil
  26. self.battleEndCondList = nil
  27. self.changeTowerState = nil
  28. end
  29. function ClimbingTowerDataMgr:RegisterNetEvents()
  30. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CLIMBING_TOWER_INFO_ACK,self.OnClimbingTowerInfoAck,self)
  31. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_FRIEND_PASS_TOWER_INFO_ACK,self.OnTowerFriendPassTowerInfoAck,self)
  32. -- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_TOWER_LEVEL_MIN_FIGHT_POWER_NTF,self.OnTowerLevelMinFightPowerNtf,self)
  33. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CLIMBING_TOWER_BEGIN_ACK,self.OnClimbingTowerBeginAck,self)
  34. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CLIMBING_TOWER_END_ACK,self.OnClimbingTowerEndAck,self)
  35. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CLIMBING_TOWER_RANK_ACK,self.OnClimbingTowerRankAck,self)
  36. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CLIMBING_TOWER_DAY_REWARD_ACK,self.OnClimbingTowerDayRewardAck,self)
  37. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_SC_GET_OTHER_PLAYER_BRIEF_INFO_ACK,self,self.OnGetRankBriefInfoAck)
  38. end
  39. function ClimbingTowerDataMgr:UnRegisterNetEvents()
  40. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CLIMBING_TOWER_INFO_ACK)
  41. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_FRIEND_PASS_TOWER_INFO_ACK)
  42. --ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_TOWER_LEVEL_MIN_FIGHT_POWER_NTF)
  43. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CLIMBING_TOWER_BEGIN_ACK)
  44. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CLIMBING_TOWER_END_ACK)
  45. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CLIMBING_TOWER_RANK_ACK)
  46. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_SC_GET_OTHER_PLAYER_BRIEF_INFO_ACK,self,self.OnGetRankBriefInfoAck);
  47. end
  48. function ClimbingTowerDataMgr:InitData()
  49. if self.bInited then
  50. return
  51. end
  52. self.levels = {}
  53. local cfgList = ManagerContainer.CfgMgr:GetClimbingTowerCfg()
  54. if cfgList ~= nil then
  55. for i = 1, #cfgList do
  56. self.levels[#self.levels+1] = ClimbingTowerLevelData:new(cfgList[i])
  57. end
  58. end
  59. self:SortLevelList()
  60. self.bInited = true
  61. end
  62. function ClimbingTowerDataMgr:SetShowLevels()
  63. self.showLevels = {}
  64. local maxLevel = self.curChallengeLevel + 4
  65. if maxLevel > #self.levels then
  66. maxLevel = #self.levels
  67. end
  68. for i = 1, maxLevel do
  69. local level = self:FindLevelData(i)
  70. level:SetPassed(level.levelId<self.curChallengeLevel)
  71. self.showLevels[#self.showLevels+1] = level
  72. end
  73. end
  74. function ClimbingTowerDataMgr:GetShowLevels()
  75. return self.showLevels
  76. end
  77. function ClimbingTowerDataMgr:SortLevelList()
  78. if self.levels == nil or #self.levels < 2 then
  79. return
  80. end
  81. table.sort(
  82. self.levels,
  83. function(a, b)
  84. return a.levelId > b.levelId
  85. end
  86. )
  87. end
  88. function ClimbingTowerDataMgr:ChangeData()
  89. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA);
  90. end
  91. function ClimbingTowerDataMgr:GetLevels()
  92. return self.levels
  93. end
  94. function ClimbingTowerDataMgr:FindLevelData(levelId)
  95. if self.levels == nil then
  96. return nil
  97. end
  98. for i = 1,#self.levels do
  99. local level = self.levels[i]
  100. if level.levelId == levelId then
  101. return level
  102. end
  103. end
  104. return nil
  105. end
  106. --function ClimbingTowerDataMgr:FindLevelIsPassed(LevelId)
  107. function ClimbingTowerDataMgr:FindLevelIsPassed()
  108. --local lvData = self:FindLevelData(levelId)
  109. --if(lvData) then
  110. --return lvData.hasPassed
  111. --end
  112. --return false
  113. --LogError("================ curChallengeLevel = "..self.curChallengeLevel.." ========================")
  114. return self.curChallengeLevel >= 1001 --true --
  115. end
  116. function ClimbingTowerDataMgr:FindRankerData(uid)
  117. if self.ranks == nil then
  118. return nil
  119. end
  120. for i=1, #self.ranks do
  121. if self.ranks[i].playerId == uid then
  122. return self.ranks[i]
  123. end
  124. end
  125. return nil
  126. end
  127. function ClimbingTowerDataMgr:GetCurChallengeLevel()
  128. return self.curChallengeLevel
  129. end
  130. function ClimbingTowerDataMgr:GetRankList()
  131. return self.ranks
  132. end
  133. function ClimbingTowerDataMgr:GetCurrentLevelInfo()
  134. return self:FindLevelData(self.curChallengeLevel)
  135. end
  136. function ClimbingTowerDataMgr:SendClimbingTowerInfoReq(changeTower)
  137. if self.requested then
  138. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_CHANGE_TOWER_SHOW_REFRESH, changeTower)
  139. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA)
  140. return
  141. end
  142. self.changeTowerState = changeTower
  143. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIMBING_TOWER_INFO_REQ, {})
  144. end
  145. function ClimbingTowerDataMgr:InitClimbingTowerInfo(data)
  146. self.curChallengeLevel = data.now_tower_level + 1
  147. self.lastPassedTime = data.now_tower_time
  148. self.dayRewardTime = data.tower_level_day_reward_time
  149. end
  150. function ClimbingTowerDataMgr:OnClimbingTowerDayRewardAck(data)
  151. if data.error == 0 then
  152. self.dayRewardTime = data.next_day_reward_time
  153. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_CLIMBINGTOWER_DAYREWARD,data.reward_list)
  154. end
  155. end
  156. function ClimbingTowerDataMgr:GetDayRewardTime()
  157. return self.dayRewardTime and (type(self.dayRewardTime) == "number" and self.dayRewardTime or #self.dayRewardTime) or 0
  158. end
  159. function ClimbingTowerDataMgr:OnClimbingTowerDayRewardREQ()
  160. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIMBING_TOWER_DAY_REWARD_REQ)
  161. end
  162. function ClimbingTowerDataMgr:OnClimbingTowerInfoAck(data)
  163. self:InitData()
  164. self.curChallengeLevel = data.now_tower_level + 1
  165. self.lastPassedTime = data.pass_time
  166. if data.infos ~= nil then
  167. for i = 1, #data.infos do
  168. local friendTowerInfo = data.infos[i]
  169. local levelInfo = self:FindLevelData(friendTowerInfo.tower_level)
  170. if levelInfo ~= nil then
  171. levelInfo:SetFriendData(friendTowerInfo.infos)
  172. end
  173. end
  174. end
  175. self:SetShowLevels()
  176. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_CHANGE_TOWER_SHOW_REFRESH, self.changeTowerState)
  177. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA)
  178. self.requested = true
  179. end
  180. function ClimbingTowerDataMgr:SendFriendPassTowerInfoReq(beginIdx,endIdx)
  181. -- LogError("SendFriendPassTowerInfoReq:" .. beginIdx .. "---" .. endIdx)
  182. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_FRIEND_PASS_TOWER_INFO_REQ, {begin_index=beginIdx,end_index=endIdx})
  183. end
  184. function ClimbingTowerDataMgr:OnTowerFriendPassTowerInfoAck(data)
  185. -- LogError("OnTowerFriendPassTowerInfoAck:" .. Inspect(data))
  186. if data.infos ~= nil then
  187. local levelIds = {}
  188. for i = 1, #data.infos do
  189. local friendTowerInfo = data.infos[i]
  190. local levelInfo = self:FindLevelData(friendTowerInfo.tower_level)
  191. if levelInfo ~= nil then
  192. levelInfo:SetFriendData(friendTowerInfo.infos)
  193. levelIds[#levelIds+1] = friendTowerInfo.tower_level
  194. end
  195. end
  196. if #levelIds > 0 then
  197. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_ClimbingTower_FriendInfo,levelIds)
  198. end
  199. end
  200. end
  201. function ClimbingTowerDataMgr:OnTowerLevelMinFightPowerNtf(data)
  202. -- LogError("OnTowerLevelMinFightPowerNtf:" .. Inspect(data))
  203. if data.min_tower_info ~= nil then
  204. for i=1, #data.min_tower_info do
  205. local info = data.min_tower_info[i]
  206. local levelInfo = self:FindLevelData(info.tower_level)
  207. if levelInfo ~= nil then
  208. levelInfo:SetLowestPlayerInfo(info.brief,info.fight_power,info.record_time,info.battle_time)
  209. end
  210. end
  211. end
  212. end
  213. function ClimbingTowerDataMgr:SendClimbingTowerBeginReq(towerLevel)
  214. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIMBING_TOWER_BEGIN_REQ, {tower_level = towerLevel})
  215. end
  216. function ClimbingTowerDataMgr:OnClimbingTowerBeginAck(data)
  217. -- LogError("OnClimbingTowerBeginAck:" .. Inspect(data))
  218. if data.error == 0 then
  219. self:EnterBattle(data.tower_level,data.factor_list)
  220. end
  221. end
  222. function ClimbingTowerDataMgr:SendClimbingTowerEndReq(loadingTime,towerLevel,timeStamp)
  223. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIMBING_TOWER_END_REQ, {loading_time = loadingTime, tower_level = towerLevel,record_time_stamp = timeStamp})
  224. end
  225. function ClimbingTowerDataMgr:OnClimbingTowerEndAck(data)
  226. -- LogError("OnClimbingTowerEndAck:" .. Inspect(data))
  227. if data.error == 0 then
  228. local levelInfo = self:GetCurrentLevelInfo()
  229. if data.reward_list ~= nil then
  230. local rewards = {}
  231. for i = 1, #data.reward_list do
  232. local itemData = data.reward_list[i];
  233. rewards[#rewards+1] = {itemData.key, itemData.value,0}
  234. end
  235. if data.ex_reward_list ~= nil then
  236. for i =1, #data.ex_reward_list do
  237. local itemData = data.ex_reward_list[i];
  238. rewards[#rewards+1] = {itemData.key, itemData.value,1}
  239. end
  240. end
  241. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerBattleWin,{Enum.UIPageName.UIClimbingTower,rewards})
  242. else
  243. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerBattleWin,{Enum.UIPageName.UIClimbingTower,nil})
  244. end
  245. self.curChallengeLevel = data.tower_level + 1
  246. if data.pass_time ~= nil then
  247. self.lastPassedTime = data.pass_time
  248. end
  249. if data.pass_info ~= nil then
  250. local levelInfo = self:FindLevelData(data.pass_info.tower_level)
  251. if levelInfo ~= nil then
  252. levelInfo:SetFriendData(data.pass_info.infos)
  253. end
  254. end
  255. self:SetShowLevels()
  256. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA)
  257. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.ClimbingTower)
  258. else
  259. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerBattleFailed,Enum.UIPageName.UIClimbingTower)
  260. end
  261. end
  262. function ClimbingTowerDataMgr:SendClimbingTowerRankReq()
  263. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIMBING_TOWER_RANK_REQ, {})
  264. end
  265. function ClimbingTowerDataMgr:OnClimbingTowerRankAck(data)
  266. -- LogError("OnClimbingTowerRankAck:" .. Inspect(data))
  267. if data.error == 0 then
  268. self.ranks = {}
  269. self.rankPlayerIds = {}
  270. for i = 1, #data.rank_list do
  271. local player = ClimbingTowerRankData:new(data.rank_list[i].key,data.rank_list[i].value)
  272. self.ranks[#self.ranks+1] = player
  273. self.rankPlayerIds[#self.rankPlayerIds+1] = data.rank_list[i].key
  274. end
  275. self.selfRank = data.self_rank
  276. local uid_list = self:GetRankUidList(10)
  277. self:ReqTowerRankBriefData(uid_list)
  278. else
  279. self.ranks = nil
  280. end
  281. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_ClimbingTower_RankData)
  282. end
  283. function ClimbingTowerDataMgr:ReqTowerRankBriefData(uids)
  284. if uids == nil or #uids == 0 then
  285. return
  286. end
  287. -- LogError("ClimbingTowerDataMgr : " .. Inspect(uids))
  288. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GET_OTHER_PLAYER_BRIEF_INFO_REQ, {type=Enum.FriendTogglePageType.ClimbingTower, player_list=uids})
  289. end
  290. function ClimbingTowerDataMgr:OnGetRankBriefInfoAck(data)
  291. -- LogError("OnGetRankBriefInfoAck:" .. Inspect(data))
  292. if data.type == Enum.FriendTogglePageType.ClimbingTower then
  293. if data.brief_info ~= nil then
  294. for i = 1,#data.brief_info do
  295. local info = data.brief_info[i]
  296. local ranker = self:FindRankerData(info.uid)
  297. if ranker ~= nil then
  298. ranker:SetRankData(info)
  299. end
  300. self:RemoveTempRankerId(info.uid)
  301. end
  302. end
  303. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_ClimbingTower_RankDetailData)
  304. end
  305. end
  306. function ClimbingTowerDataMgr:RemoveTempRankerId(uid)
  307. if self.rankPlayerIds == nil then
  308. return
  309. end
  310. for i = 1, #self.rankPlayerIds do
  311. if self.rankPlayerIds[i] == uid then
  312. table.remove(self.rankPlayerIds,i)
  313. return
  314. end
  315. end
  316. end
  317. function ClimbingTowerDataMgr:GetRankUidList(cnt)
  318. local uids = {}
  319. if self.rankPlayerIds ~= nil then
  320. if cnt > #self.rankPlayerIds then
  321. cnt = #self.rankPlayerIds
  322. end
  323. for i = 1, cnt do
  324. uids[#uids+1] = self.rankPlayerIds[i]
  325. end
  326. end
  327. return uids
  328. end
  329. function ClimbingTowerDataMgr:InitEndBattleCondition()
  330. if self.battleEndCondList ~= nil then
  331. return
  332. end
  333. self.battleEndCondList = System.Array.CreateInstance(Enum.TypeInfo.BattleEndCondition, 2)
  334. self.battleEndCondList[0] = BattleEndCondition.New(Constants.EndBattle_By_UndeadCount,Constants.ResultType_Normal)
  335. self.battleEndCondList[1] = BattleEndCondition.New(Constants.EndBattle_By_BattleTime,Constants.ResultType_Normal)
  336. end
  337. function ClimbingTowerDataMgr:EnterBattle(towerLevel,factorList)
  338. local levelInfo = self:FindLevelData(towerLevel)
  339. if levelInfo ~= nil then
  340. local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true);
  341. if teams ~= nil then
  342. ManagerContainer.LuaGameMgr:SetTeamData(teams,{false})
  343. end
  344. ManagerContainer.LuaGameMgr:RefreshTeamData()
  345. self.curMaxFightingTime = levelInfo.maxFightingTime
  346. local curOurActors = {}
  347. local curEnemyActors = {}
  348. local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true)
  349. if teams ~= nil then
  350. --会有技能 没有即使更新 此处同步属性
  351. ManagerContainer.LuaGameMgr:SetTeamData(teams,{true})
  352. --打印
  353. for i = 1, #teams do
  354. Log("ClimbingTowerDataMgr EnterBattle RoleID = "..tostring(teams[i].uid))
  355. Log("Pet Id"..tostring(petId))
  356. local Skills = teams[i].skills
  357. for i = 1, #Skills do
  358. local skillId = Skills[i].skillId
  359. local petId = Skills[i].petId
  360. Log("Role Skill"..tostring(skillId))
  361. end
  362. end
  363. end
  364. local ourActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, #teams)
  365. for i = 1 , #teams do
  366. local actor = ManagerContainer.LuaActorDataMgr:GetActorsById(teams[i].uid,teams[i].id)
  367. --增加对应压制mark
  368. ManagerContainer.DataMgr.UserData:SetActorPveMark(teams[i].uid,actor)
  369. ourActors[i-1] = actor
  370. curOurActors[#curOurActors+1] = actor
  371. end
  372. local enemyActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, #levelInfo.npcs)
  373. for i = 1, #levelInfo.npcs do
  374. local npcInfo = levelInfo.npcs[i]
  375. local actor = ManagerContainer.LuaActorDataMgr:CreateNpc(10000+i,npcInfo.npcId,npcInfo.npcPos,npcInfo.npcLevel)
  376. if actor ~= nil then
  377. actor.IsBoss = npcInfo.isBoss
  378. enemyActors[i-1] = actor
  379. curEnemyActors[#curEnemyActors+1] = actor
  380. end
  381. end
  382. local battleFactors = System.Array.CreateInstance(Enum.TypeInfo.ValType, #factorList)
  383. for i = 1, #factorList do
  384. local factor = ValType.New(factorList[i].key,factorList[i].value)
  385. battleFactors[i-1] = factor
  386. end
  387. self.curEnterBattleTime = Time.realtimeSinceStartup
  388. self.isPlayRecord = false
  389. self:InitEndBattleCondition()
  390. ManagerContainer.LuaGameMgr:EnterClimbingTowerBattle(levelInfo.sceneName,levelInfo.bgmName,levelInfo.maxFightingTime,ourActors,enemyActors,self.battleEndCondList,nil,battleFactors)
  391. end
  392. end
  393. function ClimbingTowerDataMgr:ReplayBattle(towerLevel,battleRecordStr,replayername)
  394. local levelInfo = self:FindLevelData(towerLevel)
  395. if levelInfo == nil then
  396. return
  397. end
  398. self.isPlayRecord = true
  399. self.recordLevelId = towerLevel
  400. ManagerContainer.LuaGameMgr:EnterClimbingTowerBattle(levelInfo.sceneName,levelInfo.bgmName,levelInfo.maxFightingTime,nil,nil,nil,battleRecordStr,nil,replayername)
  401. end
  402. function ClimbingTowerDataMgr:IsPlayRecord()
  403. return self.isPlayRecord,self.recordLevelId
  404. end
  405. function ClimbingTowerDataMgr:GetCurrentMaxFightingTime()
  406. return self.curMaxFightingTime
  407. end
  408. function ClimbingTowerDataMgr:BattleEnd(battleTime,isPlayRecord,timeStamp)
  409. if self.isPlayRecord then
  410. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE,Enum.UIPageName.UIClimbingTower)
  411. return
  412. end
  413. self:SendClimbingTowerEndReq(battleTime,self.curChallengeLevel,timeStamp)
  414. end
  415. function ClimbingTowerDataMgr:EnterBattle_WJ(towerLevel, factorList)
  416. local scenceName = "scene_climbingtower"
  417. local bgmName = "bgm_08"
  418. local NpcList = self:CreateNpcList({{70001, 1}, {70006, 4}, {70001, 3}, {70001, 2}}, 1500)
  419. local maxFight = 120
  420. local levelInfo = self:FindLevelData(towerLevel)
  421. local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true);
  422. if teams ~= nil then
  423. ManagerContainer.LuaGameMgr:SetTeamData(teams, {false})
  424. end
  425. ManagerContainer.LuaGameMgr:RefreshTeamData()
  426. self.curMaxFightingTime = maxFight
  427. local curOurActors = {}
  428. local curEnemyActors = {}
  429. local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true)
  430. if teams ~= nil then
  431. -- 会有技能 没有即使更新 此处同步属性
  432. ManagerContainer.LuaGameMgr:SetTeamData(teams, {true})
  433. -- 打印
  434. for i = 1, #teams do
  435. Log("ClimbingTowerDataMgr EnterBattle RoleID = " .. tostring(teams[i].uid))
  436. Log("Pet Id" .. tostring(petId))
  437. local Skills = teams[i].skills
  438. for i = 1, #Skills do
  439. local skillId = Skills[i].skillId
  440. local petId = Skills[i].petId
  441. Log("Role Skill" .. tostring(skillId))
  442. end
  443. end
  444. end
  445. local ourActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, #teams)
  446. for i = 1, #teams do
  447. local actor = ManagerContainer.LuaActorDataMgr:GetActorsById(teams[i].uid, teams[i].id)
  448. -- 增加对应压制mark
  449. ManagerContainer.DataMgr.UserData:SetActorPveMark(teams[i].uid, actor)
  450. ourActors[i - 1] = actor
  451. curOurActors[#curOurActors + 1] = actor
  452. end
  453. local enemyActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, #NpcList)
  454. for i = 1, #NpcList do
  455. local npcInfo = NpcList[i]
  456. local actor = ManagerContainer.LuaActorDataMgr:CreateNpc(10000 + i, npcInfo.npcId, npcInfo.npcPos,
  457. npcInfo.npcLevel)
  458. if actor ~= nil then
  459. actor.IsBoss = npcInfo.isBoss
  460. enemyActors[i - 1] = actor
  461. curEnemyActors[#curEnemyActors + 1] = actor
  462. end
  463. end
  464. local battleFactors = System.Array.CreateInstance(Enum.TypeInfo.ValType, #factorList)
  465. for i = 1, #factorList do
  466. local factor = ValType.New(factorList[i].key, factorList[i].value)
  467. battleFactors[i - 1] = factor
  468. end
  469. self.curEnterBattleTime = Time.realtimeSinceStartup
  470. self.isPlayRecord = false
  471. self:InitEndBattleCondition()
  472. ManagerContainer.LuaGameMgr:EnterClimbingTowerBattle(scenceName, bgmName, maxFight, ourActors, enemyActors,
  473. self.battleEndCondList, nil, battleFactors)
  474. end
  475. function ClimbingTowerDataMgr:CreateNpcList(npclist, lv)
  476. local ClimbingTowerNpcData = require("ClimbingTower/ClimbingTowerNpcData")
  477. local npcs = {}
  478. for i = 1, #npclist, 1 do
  479. npcs[#npcs + 1] = ClimbingTowerNpcData:new(npclist[i], lv)
  480. end
  481. return npcs
  482. end
  483. function ClimbingTowerDataMgr:GetTowerMode()
  484. return self.towerMode
  485. end
  486. function ClimbingTowerDataMgr:SetTowerMode(mode)
  487. self.towerMode = mode
  488. end
  489. function ClimbingTowerDataMgr:GetCurWJTowerInfo()
  490. local info = {}
  491. info.npcList = self:CreateNpcList({{70001, 1}, {70006, 4}, {70001, 3}, {70001, 2}}, 1500)
  492. info.lv = 1500
  493. return info
  494. end
  495. return ClimbingTowerDataMgr