UIPartnerLvUpCtr.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. local UIPartnerLvUpCtr = class("UIPartnerLvUpCtr", require("UICtrBase"))
  2. local canAdvence = false
  3. local isLeader = false
  4. function UIPartnerLvUpCtr:Init(view)
  5. self.view = view
  6. end
  7. function UIPartnerLvUpCtr:SetData(data)
  8. self.asyncIdx = 0
  9. if data == nil then return end
  10. self.data = data
  11. isLeader = data == 1
  12. end
  13. function UIPartnerLvUpCtr:GetAsyncIdx()
  14. self.asyncIdx = self.asyncIdx + 1
  15. return self.asyncIdx
  16. end
  17. function UIPartnerLvUpCtr:GetData()
  18. return self.data
  19. end
  20. function UIPartnerLvUpCtr:GetHeroLogicId()
  21. local logicData = self:GetHeroLogicData()
  22. return logicData.id
  23. end
  24. function UIPartnerLvUpCtr:PartnerLvUpReq(id)
  25. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_LEVEL_UP_REQ, {hero_id = id})
  26. end
  27. function UIPartnerLvUpCtr:PartnerAdvenceLvUpReq(id)
  28. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_ADVANCE_REQ, {hero_id = id})
  29. end
  30. function UIPartnerLvUpCtr:GetHeroLogicData()
  31. if isLeader then
  32. return ManagerContainer.DataMgr.UserData:GetHeroData()
  33. else
  34. return ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(self.data)
  35. end
  36. end
  37. function UIPartnerLvUpCtr:GetPartnerCurMaxLv()
  38. local logicData = self:GetHeroLogicData()
  39. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  40. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  41. if stepData == nil then
  42. canAdvence = false
  43. return logicData.baseLevel
  44. end
  45. local advenceMaxLv = logicData.advanceLevel < #stepData.AddLv and stepData.AddLv[logicData.advanceLevel + 1] or stepData.AddLv[#stepData.AddLv]
  46. local curMaxLv = logicData.strengthLevel == 0 and advenceMaxLv or (advenceMaxLv + stepData.BreachAddLv[logicData.strengthLevel])
  47. canAdvence = advenceMaxLv <= logicData.baseLevel and (logicData.advanceLevel + 1) < #stepData.AddLv
  48. if #stepData.AddLv <= (logicData.advanceLevel + 1) then
  49. advenceMaxLv = nil
  50. end
  51. return curMaxLv, advenceMaxLv
  52. end
  53. function UIPartnerLvUpCtr:CanAdvence()
  54. return canAdvence
  55. end
  56. function UIPartnerLvUpCtr:GetPartnerNextMaxLv()
  57. local logicData = self:GetHeroLogicData()
  58. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  59. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  60. return stepData.AddLv[logicData.advanceLevel + 2]
  61. end
  62. function UIPartnerLvUpCtr:GetPartmerLastMaxLv()
  63. local logicData = self:GetHeroLogicData()
  64. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  65. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  66. if logicData.advanceLevel - 1 == 0 then
  67. return logicData.strengthLevel == 0 and stepData.AddLv[1] or (stepData.AddLv[1] + stepData.BreachAddLv[logicData.strengthLevel])
  68. end
  69. local advenceMaxLv = logicData.advanceLevel < #stepData.AddLv and stepData.AddLv[logicData.advanceLevel] or stepData.AddLv[#stepData.AddLv]
  70. local maxLv = logicData.strengthLevel == 0 and advenceMaxLv or (advenceMaxLv + stepData.BreachAddLv[logicData.strengthLevel])
  71. return maxLv
  72. end
  73. function UIPartnerLvUpCtr:GetHeroStepData()
  74. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(self.data)
  75. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  76. return ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  77. end
  78. function UIPartnerLvUpCtr:OnDispose()
  79. self.data = nil
  80. self.view = nil
  81. end
  82. return UIPartnerLvUpCtr