ClimbingTowerDataMgr.lua 24 KB

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