ExpeditionMapData.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. local ExpeditionMapData = class("ExpeditionMapData")
  2. local ExpeditionLevelData = require("Expedition/ExpeditionLevelData")
  3. function ExpeditionMapData:ctor(mapId,cfg)
  4. self.mapId = mapId
  5. self.maxLevelNum = cfg.LevelNum
  6. self.name = cfg.Name
  7. self.icon = cfg.Icon
  8. self.sceneName = cfg.SceneName
  9. self.bgm = cfg.BGM
  10. self.loadingId = cfg.LoadingId
  11. self.bannerImg = cfg.BannerImg
  12. self.showRewards = cfg.ShowReward
  13. self.unlockConds = cfg.UnlockCondition
  14. self.unlockContent = cfg.UnlockDesc or ""
  15. self.levelBg = cfg.LevelBg or ""
  16. self.isPassed = false --是否通关
  17. self.unlocked = false
  18. self.isChallenging = false
  19. self.allLevels = nil
  20. self.isUnfold = false
  21. self.isNew = false
  22. self:InitData()
  23. end
  24. function ExpeditionMapData:InitData()
  25. self.allLevels = {}
  26. for levelId = 1, self.maxLevelNum do
  27. local cfg = ManagerContainer.CfgMgr:GetExpeditionCfgByTypeAndLevelId(self.mapId,levelId)
  28. if cfg ~= nil then
  29. self.allLevels[#self.allLevels + 1] = ExpeditionLevelData:new(cfg)
  30. end
  31. end
  32. -- self:CheckUnlock()
  33. end
  34. function ExpeditionMapData:SetUnfold(unfold)
  35. self.isUnfold = unfold
  36. self.isNew = false
  37. end
  38. function ExpeditionMapData:SetUnlockState(unlocked)
  39. self.unlocked = unlocked
  40. end
  41. function ExpeditionMapData:SetChallengeState(challenging)
  42. self.isChallenging = challenging
  43. if challenging then
  44. self.isUnfold = true
  45. end
  46. end
  47. function ExpeditionMapData:SetMapPassed()
  48. if self.allLevels == nil then
  49. return
  50. end
  51. for i = 1, #self.allLevels do
  52. self.allLevels[i]:SetPassed(true)
  53. end
  54. self.isPassed = true
  55. end
  56. function ExpeditionMapData:SetPassedLevels(curChallengeLevel)
  57. if curChallengeLevel == nil or curChallengeLevel <= 1 then
  58. return
  59. end
  60. for levelId = 1, curChallengeLevel-1 do
  61. local level = self:FindLevelByLevelId(levelId)
  62. if level ~= nil then
  63. level:SetPassed(true)
  64. end
  65. end
  66. end
  67. function ExpeditionMapData:SetGotRewardLevels(levelIds)
  68. if levelIds == nil then
  69. return
  70. end
  71. for i = 1, #levelIds do
  72. local level = self:FindLevelByLevelId(levelIds[i])
  73. if level ~= nil then
  74. level:SetGotReward(true)
  75. end
  76. end
  77. end
  78. function ExpeditionMapData:SetGotRewardLevel(levelId)
  79. local level = self:FindLevelByLevelId(levelId)
  80. if level ~= nil then
  81. level:SetGotReward(true)
  82. end
  83. end
  84. function ExpeditionMapData:SetMapGotReward()
  85. if self.allLevels == nil then
  86. return
  87. end
  88. for i = 1, #self.allLevels do
  89. self.allLevels[i]:SetGotReward(true)
  90. end
  91. end
  92. function ExpeditionMapData:FindLevelByLevelId(levelId)
  93. if self.allLevels == nil or #self.allLevels == 0 then
  94. return nil
  95. end
  96. for i = 1, #self.allLevels do
  97. if self.allLevels[i].levelId == levelId then
  98. return self.allLevels[i]
  99. end
  100. end
  101. return nil
  102. end
  103. function ExpeditionMapData:GetLevelIdxByLevelId(levelId)
  104. if self.allLevels == nil or #self.allLevels == 0 then
  105. return 0
  106. end
  107. for i = 1, #self.allLevels do
  108. if self.allLevels[i].levelId == levelId then
  109. return i
  110. end
  111. end
  112. return 0
  113. end
  114. function ExpeditionMapData:GetNextGoodRewardLevel(curLevelId)
  115. if self.isPassed then
  116. return 0
  117. end
  118. if self.allLevels == nil or #self.allLevels == 0 then
  119. return 0
  120. end
  121. local levelIdx = self:GetLevelIdxByLevelId(curLevelId)
  122. for i = levelIdx, #self.allLevels do
  123. if self.allLevels[i].isGoodReward then
  124. return i - levelIdx + 1
  125. end
  126. end
  127. return 0
  128. end
  129. function ExpeditionMapData:Reset()
  130. self.isUnfold = false
  131. self.isPassed = false
  132. self.isChallenging = false
  133. if self.allLevels ~= nil then
  134. for i = 1, #self.allLevels do
  135. local level = self.allLevels[i]
  136. level:SetPassed(false)
  137. level:SetGotReward(false)
  138. end
  139. end
  140. end
  141. function ExpeditionMapData:HasRedPoint()
  142. if self.isNew then
  143. return true
  144. end
  145. if self.allLevels == nil then
  146. return false
  147. end
  148. for i = 1, #self.allLevels do
  149. if self.allLevels[i]:HasRedPoint() then
  150. return true
  151. end
  152. end
  153. return false
  154. end
  155. function ExpeditionMapData:SetNewState(bNew)
  156. self.isNew = bNew
  157. end
  158. return ExpeditionMapData