UIGuildHuntBattleCtr.lua 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. local UIGuildHuntBattleCtr = class("UIGuildHuntBattleCtr", require("UICtrBase"))
  2. function UIGuildHuntBattleCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIGuildHuntBattleCtr:SetData(data)
  6. self.asyncIdx = 0
  7. self.data = data
  8. end
  9. function UIGuildHuntBattleCtr:GetAsyncIdx()
  10. self.asyncIdx = self.asyncIdx + 1
  11. return self.asyncIdx
  12. end
  13. function UIGuildHuntBattleCtr:GetData()
  14. return self.data
  15. end
  16. function UIGuildHuntBattleCtr:OnDispose()
  17. self.data = nil
  18. self.view = nil
  19. self.rewardRanges = nil
  20. self.rewards = nil
  21. self.rewardIcons = nil
  22. self.bossName = nil
  23. end
  24. function UIGuildHuntBattleCtr:InitData()
  25. self.rewardRanges = nil
  26. self.rewardIcons = nil
  27. self.rewardIdx = nil
  28. local bossId = ManagerContainer.DataMgr.GuildDataMgr:GetHuntBattleBossId()
  29. if not bossId then return end
  30. local bossCfgData = ManagerContainer.CfgMgr:GetGuildHuntBossCfgById(bossId)
  31. if not bossCfgData then return end
  32. local npcCfgData = ManagerContainer.CfgMgr:GetNpcCfgById(bossCfgData.SummonId)
  33. if npcCfgData then
  34. self.bossName = npcCfgData.Name
  35. end
  36. local damageSegment = bossCfgData.DamageSegment
  37. if not damageSegment or damageSegment <= 0 then
  38. return
  39. end
  40. local rewardRanges = bossCfgData.RewardRange
  41. if not rewardRanges then
  42. return
  43. end
  44. local rewardRangeLength = #rewardRanges
  45. if rewardRangeLength < damageSegment then
  46. return
  47. end
  48. self.rewardRanges = rewardRanges
  49. self.rewardIcons = bossCfgData.DamageSegmeReward
  50. self.rewardIdx = 1
  51. -- self:RefreshDamage()
  52. end
  53. function UIGuildHuntBattleCtr:RefreshDamage()
  54. local damage = self:GetCurDamage()
  55. if not self.rewardRanges then return false end
  56. local newRewardIdx = self.rewardIdx
  57. for i = self.rewardIdx, #self.rewardRanges do
  58. local rewardRange = self.rewardRanges[i]
  59. if damage < rewardRange[1] then
  60. break
  61. end
  62. newRewardIdx = i
  63. if damage < rewardRange[2] then
  64. break
  65. end
  66. end
  67. if newRewardIdx == self.rewardIdx then
  68. return false
  69. end
  70. self.rewardIdx = newRewardIdx
  71. return true
  72. end
  73. function UIGuildHuntBattleCtr:GetCurDamage()
  74. local hurtValue = ManagerContainer.DataMgr.GuildDataMgr:GetRecordHurtValue()
  75. hurtValue = Mathf.Floor(hurtValue)
  76. return hurtValue
  77. end
  78. function UIGuildHuntBattleCtr:GetCurDamagePercent()
  79. if not self.rewardRanges then return 1 end
  80. local rewardRange = self.rewardRanges[self.rewardIdx]
  81. if not rewardRange then return 1 end
  82. local damage = self:GetCurDamage()
  83. damage = damage - rewardRange[1]
  84. local maxDamage = rewardRange[2] - rewardRange[1]
  85. if maxDamage <= 0 then return 1 end
  86. return Mathf.Clamp01(damage / maxDamage)
  87. end
  88. function UIGuildHuntBattleCtr:GetCurRewardRange()
  89. if not self.rewardRanges then return 0, 0 end
  90. local rewardRange = self.rewardRanges[self.rewardIdx]
  91. if not rewardRange then return 0, 0 end
  92. return rewardRange[1] or 0, rewardRange[2] or 0
  93. end
  94. function UIGuildHuntBattleCtr:GetRewardIcon()
  95. if not self.rewardIcons then return nil end
  96. return self.rewardIcons[self.rewardIdx]
  97. end
  98. function UIGuildHuntBattleCtr:GetRewardNum()
  99. return self.rewardIdx or 0
  100. end
  101. function UIGuildHuntBattleCtr:GetBossName()
  102. return self.bossName
  103. end
  104. function UIGuildHuntBattleCtr:FightingTime()
  105. return ManagerContainer.LuaTimeBattleMgr:GetLeftFightingTime()
  106. end
  107. return UIGuildHuntBattleCtr