UIChipRoomCtr.lua 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. local UIChipRoomCtr = class("UIChipRoomCtr", require("UICtrBase"))
  2. function UIChipRoomCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIChipRoomCtr:SetData(data)
  6. self.asyncIdx = 0
  7. if data == nil then return end
  8. self.data = data
  9. end
  10. function UIChipRoomCtr:GetAsyncIdx()
  11. self.asyncIdx = self.asyncIdx + 1
  12. return self.asyncIdx
  13. end
  14. function UIChipRoomCtr:GetData()
  15. return self.data
  16. end
  17. function UIChipRoomCtr:OnDispose()
  18. self.data = nil
  19. self.view = nil
  20. self.chipDatas = nil
  21. end
  22. function UIChipRoomCtr:RefreshCanDecomposeChips()
  23. local chipDatas = ManagerContainer.DataMgr.ChipData:GetAllChipDatas()
  24. local newChipDatas = {}
  25. local owned = false
  26. local parterId = nil
  27. for cfgId, value in pairs(chipDatas) do
  28. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  29. local composeItem = itemCfgData.ComposeItem
  30. if composeItem and #composeItem > 0 then
  31. if type(composeItem[1]) == 'number' then
  32. -- 单个
  33. parterId = composeItem[1]
  34. local data = ManagerContainer.DataMgr.PartnerData:GetPartnerDataById(parterId)
  35. owned = ((data and data.owned) and data.owned or false)
  36. else
  37. owned = true
  38. end
  39. end
  40. if owned then
  41. local chipData = clone(value)
  42. local selected = false
  43. if self.data then
  44. for _,v in pairs(self.data) do
  45. if v == cfgId then
  46. selected = true
  47. break
  48. end
  49. end
  50. end
  51. chipData.cost = selected and chipData.num or 0
  52. table.insert(newChipDatas, chipData)
  53. end
  54. end
  55. table.sort(newChipDatas, function(a, b)
  56. local itemCfgDataA = ManagerContainer.CfgMgr:GetItemById(a.cfgId)
  57. local itemCfgDataB = ManagerContainer.CfgMgr:GetItemById(b.cfgId)
  58. if itemCfgDataA.Quality == itemCfgDataB.Quality then
  59. return a.cfgId < b.cfgId
  60. else
  61. return itemCfgDataA.Quality > itemCfgDataB.Quality
  62. end
  63. end)
  64. self.chipDatas = newChipDatas
  65. end
  66. function UIChipRoomCtr:ResetChipsCost()
  67. for i = 1, #self.chipDatas do
  68. self.chipDatas[i].cost = 0
  69. end
  70. end
  71. function UIChipRoomCtr:GetCanDecomposeChips()
  72. return self.chipDatas
  73. end
  74. function UIChipRoomCtr:GetExpectDecomposeChips(oneKey)
  75. if oneKey then
  76. return self.chipDatas, #self.chipDatas
  77. else
  78. local num = 0
  79. for i = 1, #self.chipDatas do
  80. if self.chipDatas[i].cost > 0 then
  81. num = num + 1
  82. end
  83. end
  84. return self.chipDatas, num
  85. end
  86. end
  87. return UIChipRoomCtr