UIArtifactReforgeCtr.lua 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. local UIArtifactReforgeCtr = class("UIArtifactReforgeCtr", require("UICtrBase"))
  2. local reforgeStarCount = 5
  3. function UIArtifactReforgeCtr:Init(view)
  4. self.view = view
  5. end
  6. function UIArtifactReforgeCtr:SetData(data)
  7. reforgeStarCount = GlobalConfig.Instance:GetConfigIntValue(339)
  8. self.asyncIdx = 0
  9. if data == nil then return end
  10. self.data = data
  11. end
  12. function UIArtifactReforgeCtr:GetAsyncIdx()
  13. self.asyncIdx = self.asyncIdx + 1
  14. return self.asyncIdx
  15. end
  16. function UIArtifactReforgeCtr:GetData()
  17. return self.data
  18. end
  19. function UIArtifactReforgeCtr:RefrshShowDatas(idx)
  20. self.curSelectedIdx = nil
  21. if idx == 1 then
  22. self.showDatas = self:RefreshReforgeDatas()
  23. self.curSelectedIdx = nil
  24. elseif idx == 2 then
  25. self.showDatas = self:RefreshReforgeDatas()
  26. self.leftSelectedIdx = nil
  27. self.rightSelectedIdx = nil
  28. end
  29. self.showDataLength = self.showDatas and #self.showDatas or 0
  30. end
  31. function UIArtifactReforgeCtr:RefreshReforgeDatas()
  32. local datas = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquips()
  33. local list = {}
  34. for i = 1, #datas do
  35. if datas[i].maxStarLv >= reforgeStarCount then
  36. list[#list + 1] = datas[i]
  37. datas[i].reforgeSelected = false
  38. datas[i].transSelected = false
  39. end
  40. end
  41. CommonUtil.ArraySortSelections(list, Enum.TableSortRule.Down, "quality", "starLv", "cfgId", "id")
  42. return list
  43. end
  44. function UIArtifactReforgeCtr:GetShowDataLength()
  45. return self.showDataLength
  46. end
  47. function UIArtifactReforgeCtr:GetShowData(idx)
  48. return self.showDatas and self.showDatas[idx + 1] or nil
  49. end
  50. function UIArtifactReforgeCtr:SetCurSelectedIdx(idx)
  51. local oldIdx
  52. if self.curSelectedIdx ~= idx then
  53. if self.curSelectedIdx then
  54. local oldData = self:GetShowData(self.curSelectedIdx - 1)
  55. if oldData then
  56. oldData.reforgeSelected = false
  57. oldIdx = self.curSelectedIdx
  58. end
  59. end
  60. self.curSelectedIdx = idx
  61. if idx then
  62. local data = self:GetShowData(idx - 1)
  63. if data then
  64. data.reforgeSelected = true
  65. end
  66. end
  67. else
  68. oldIdx = self.curSelectedIdx
  69. self.curSelectedIdx = nil
  70. end
  71. return oldIdx
  72. end
  73. function UIArtifactReforgeCtr:GetCurSelecteIdx()
  74. return self.curSelectedIdx
  75. end
  76. function UIArtifactReforgeCtr:SetTransSelected(idx)
  77. local function CheckTransError(leftIdx, rightIdx)
  78. if not leftIdx or not rightIdx then return 0 end
  79. local leftData = self:GetShowData(leftIdx - 1)
  80. local rightData = self:GetShowData(rightIdx - 1)
  81. if leftData.maxStarLv ~= rightData.maxStarLv then
  82. return 1
  83. elseif leftData.starLv == rightData.starLv then
  84. return 2
  85. elseif leftData.cfgId == rightData.cfgId then
  86. return 3
  87. else
  88. return 0
  89. end
  90. end
  91. local oldIdx, newIdx
  92. if self.leftSelectedIdx == idx then
  93. oldIdx = self.leftSelectedIdx
  94. if oldIdx then
  95. local oldData = self:GetShowData(oldIdx - 1)
  96. if oldData then
  97. oldData.transSelected = false
  98. end
  99. end
  100. self.leftSelectedIdx = nil
  101. return 0, oldIdx, newIdx
  102. elseif self.rightSelectedIdx == idx then
  103. oldIdx = self.rightSelectedIdx
  104. if oldIdx then
  105. local oldData = self:GetShowData(oldIdx - 1)
  106. if oldData then
  107. oldData.transSelected = false
  108. end
  109. end
  110. self.rightSelectedIdx = nil
  111. return 0, oldIdx, newIdx
  112. end
  113. if (self.leftSelectedIdx and self.leftSelectedIdx == idx) or not self.leftSelectedIdx then
  114. local checkCode = CheckTransError(idx, self.rightSelectedIdx)
  115. if checkCode > 0 then
  116. return checkCode
  117. end
  118. oldIdx = self.leftSelectedIdx
  119. if oldIdx then
  120. local oldData = self:GetShowData(oldIdx - 1)
  121. if oldData then
  122. oldData.transSelected = false
  123. end
  124. end
  125. if idx == oldIdx then idx = nil end
  126. if idx then
  127. local oldData = self:GetShowData(idx - 1)
  128. if oldData then
  129. oldData.transSelected = true
  130. end
  131. end
  132. self.leftSelectedIdx = idx
  133. return 0, oldIdx, newIdx
  134. end
  135. if (self.rightSelectedIdx and self.rightSelectedIdx == idx) or not self.rightSelectedIdx then
  136. local checkCode = CheckTransError(self.leftSelectedIdx, idx)
  137. if checkCode > 0 then
  138. return checkCode
  139. end
  140. oldIdx = self.rightSelectedIdx
  141. if oldIdx then
  142. local oldData = self:GetShowData(oldIdx - 1)
  143. if oldData then
  144. oldData.transSelected = false
  145. end
  146. end
  147. if idx == oldIdx then idx = nil end
  148. if idx then
  149. local oldData = self:GetShowData(idx - 1)
  150. if oldData then
  151. oldData.transSelected = true
  152. end
  153. end
  154. self.rightSelectedIdx = idx
  155. return 0, oldIdx, newIdx
  156. end
  157. if self.leftSelectedIdx ~= idx and self.rightSelectedIdx ~= idx then return 4 end
  158. end
  159. function UIArtifactReforgeCtr:GetTransSelectedIdx()
  160. return self.leftSelectedIdx, self.rightSelectedIdx
  161. end
  162. function UIArtifactReforgeCtr:ClearLeftTransSelectedIdx()
  163. if self.leftSelectedIdx then
  164. local oldData = self:GetShowData(self.leftSelectedIdx - 1)
  165. if oldData then
  166. oldData.transSelected = false
  167. end
  168. end
  169. self.leftSelectedIdx = nil
  170. end
  171. function UIArtifactReforgeCtr:ClearRightTransSelectedIdx()
  172. if self.rightSelectedIdx then
  173. local oldData = self:GetShowData(self.rightSelectedIdx - 1)
  174. if oldData then
  175. oldData.transSelected = false
  176. end
  177. end
  178. self.rightSelectedIdx = nil
  179. end
  180. function UIArtifactReforgeCtr:SendReforgeReq()
  181. local curIdx = self:GetCurSelecteIdx()
  182. if not curIdx then
  183. return
  184. end
  185. local skillEuipData = self:GetShowData(curIdx - 1)
  186. if skillEuipData then
  187. ManagerContainer.DataMgr.SkillEquipData:SendSkillEquipReforgeReq(skillEuipData.id)
  188. end
  189. end
  190. function UIArtifactReforgeCtr:SendTransReq()
  191. local leftData = self:GetShowData(self.leftSelectedIdx - 1)
  192. local rightData = self:GetShowData(self.rightSelectedIdx - 1)
  193. ManagerContainer.DataMgr.SkillEquipData:SendSkillEquipShiftReq(leftData.id, rightData.id)
  194. end
  195. function UIArtifactReforgeCtr:GetOldLeftAndRightData()
  196. local leftData = self:GetShowData(self.leftSelectedIdx - 1)
  197. local rightData = self:GetShowData(self.rightSelectedIdx - 1)
  198. return leftData, rightData
  199. end
  200. function UIArtifactReforgeCtr:OnDispose()
  201. if self.showDatas then
  202. for _,v in pairs(self.showDatas) do
  203. v.reforgeSelected = false
  204. v.transSelected = false
  205. end
  206. self.showDatas = nil
  207. end
  208. self.oldLeftData = nil
  209. self.oldRighttData = nil
  210. self.data = nil
  211. self.view = nil
  212. end
  213. return UIArtifactReforgeCtr