UIArtifactStarUpCtr.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. local UIArtifactStarUpCtr = class("UIArtifactStarUpCtr", require("UICtrBase"))
  2. function UIArtifactStarUpCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIArtifactStarUpCtr:SetData(data)
  6. self.asyncIdx = 0
  7. if data == nil then return end
  8. self.data = data
  9. self.skillEquipData = data[1]
  10. self.heroId = data[2]
  11. self.selectedIds = {}
  12. end
  13. function UIArtifactStarUpCtr:GetAsyncIdx()
  14. self.asyncIdx = self.asyncIdx + 1
  15. return self.asyncIdx
  16. end
  17. function UIArtifactStarUpCtr:GetData()
  18. return self.data
  19. end
  20. function UIArtifactStarUpCtr:GetSkillEquipData()
  21. return self.data[1]
  22. end
  23. function UIArtifactStarUpCtr:GetHeroId()
  24. return self.data[2]
  25. end
  26. function UIArtifactStarUpCtr:GetHeroCfgId()
  27. return self.data[3]
  28. end
  29. function UIArtifactStarUpCtr:GetHeroNickname()
  30. return self.data[4]
  31. end
  32. function UIArtifactStarUpCtr:RefreshShowDatas()
  33. self.showDatas = self:RefreshStarUpCostSkillEquipDatas()
  34. local showDataLength = 0
  35. if self.showDatas then
  36. showDataLength = #self.showDatas
  37. if self.row and self.minColumn then
  38. local curColumn = Mathf.Ceil(showDataLength / self.row) + 2
  39. if curColumn < self.minColumn then
  40. curColumn = self.minColumn
  41. end
  42. showDataLength = curColumn * self.row
  43. end
  44. end
  45. self.showDataLength = showDataLength
  46. end
  47. local conditionCound = 0
  48. function UIArtifactStarUpCtr:RefreshStarUpCostSkillEquipDatas()
  49. conditionCound = 0
  50. local skillEquipData = self.skillEquipData
  51. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(skillEquipData.cfgId)
  52. if not cfgData then
  53. return
  54. end
  55. local starLv = skillEquipData.starLv
  56. if starLv >= skillEquipData.maxStarLv then
  57. return
  58. end
  59. local cost = cfgData.Condition[starLv + 1][1]
  60. conditionCound = cost[2]
  61. local skillEquipDatas = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquips()
  62. if not skillEquipDatas or not next(skillEquipDatas) then return end
  63. local list = {}
  64. for _,v in pairs(skillEquipDatas) do
  65. if cost[1] == v.cfgId and v.starLv == 0 then
  66. list[#list + 1] = v
  67. end
  68. end
  69. CommonUtil.ArraySortSelections(list, Enum.TableSortRule.Down, "quality", "maxStarLv", "cfgId")
  70. return list
  71. end
  72. function UIArtifactStarUpCtr:SetGridRowColumn(row, minColumn)
  73. self.row = row
  74. self.minColumn = minColumn
  75. end
  76. function UIArtifactStarUpCtr:GetShowDataLength()
  77. return self.showDataLength or 0
  78. end
  79. function UIArtifactStarUpCtr:IsCostSkillEuipEnough()
  80. local count = #self.selectedIds
  81. return count >= conditionCound
  82. end
  83. function UIArtifactStarUpCtr:GetShowData(itemIndex)
  84. return self.showDatas and self.showDatas[itemIndex + 1] or nil
  85. end
  86. function UIArtifactStarUpCtr:ClearSelected()
  87. self.selectedIds = {}
  88. end
  89. function UIArtifactStarUpCtr:SelectSkillEquip(data)
  90. local oldId
  91. local result, idx = CommonUtil.EleInTable(data.id, self.selectedIds)
  92. if idx then
  93. data.selected = 0
  94. table.remove(self.selectedIds, idx)
  95. else
  96. if #self.selectedIds >= conditionCound then
  97. if conditionCound >= 2 then
  98. return
  99. elseif conditionCound == 1 then
  100. local oldData = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquipDataByUid(self.selectedIds[1])
  101. if oldData then
  102. oldId = oldData.id
  103. oldData.selected = 0
  104. end
  105. table.remove(self.selectedIds, 1)
  106. end
  107. end
  108. data.selected = 1
  109. table.insert(self.selectedIds, data.id)
  110. end
  111. if oldId then
  112. for i = 1, #self.showDatas do
  113. if self.showDatas[i].id == oldId then
  114. return i
  115. end
  116. end
  117. end
  118. end
  119. function UIArtifactStarUpCtr:GetSelectedCostCount()
  120. return #self.selectedIds
  121. end
  122. function UIArtifactStarUpCtr:SendStarUpReq()
  123. ManagerContainer.DataMgr.SkillEquipData:SendSkillEquipStarUpReq(self.heroId, self.skillEquipData.id, self.selectedIds)
  124. end
  125. function UIArtifactStarUpCtr:OnDispose()
  126. if self.selectedIds then
  127. for i = 1, #self.selectedIds do
  128. local data = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquipDataByUid(self.selectedIds[i])
  129. if data then
  130. data.selected = 0
  131. end
  132. end
  133. self.selectedIds = nil
  134. end
  135. self.data = nil
  136. self.view = nil
  137. end
  138. return UIArtifactStarUpCtr