PetBookCtr.lua 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. local PetBookCtr = class("PetBookCtr", require("UICtrBase"))
  2. function PetBookCtr:Init()
  3. end
  4. function PetBookCtr:GetData()
  5. return self.data
  6. end
  7. function PetBookCtr:GetCurCount(type)
  8. local count = ManagerContainer.DataMgr.PetDataMgr:GetActivedPetCount(type)
  9. return count
  10. end
  11. function PetBookCtr:GetHandBookPetCfgDatas(quality)
  12. local list = {}
  13. local datas = clone(ManagerContainer.CfgMgr:GetPetDatasByQuality(quality))
  14. if datas then
  15. for _,v in pairs(datas) do
  16. local data = ManagerContainer.DataMgr.PetDataMgr:GetPetCollectBoolState(v.Id)
  17. v.canActive = not data
  18. list[#list + 1] = v
  19. end
  20. CommonUtil.ArraySortSelections(list, Enum.TableSortRule.Up, "canActive", "Quality", "Id")
  21. end
  22. return list
  23. end
  24. function PetBookCtr:GetHandBookPetCfgDatasByType(type)
  25. if type == Enum.CollectQualityType.ALL then
  26. local list = {}
  27. local datas = clone(ManagerContainer.CfgMgr:GetAllPetDatas())
  28. if datas then
  29. for _,v in pairs(datas) do
  30. local data = ManagerContainer.DataMgr.PetDataMgr:GetPetCollectBoolState(v.Id)
  31. v.canActive = not data
  32. list[#list + 1] = v
  33. end
  34. CommonUtil.ArraySortSelections(list, Enum.TableSortRule.Up, "canActive", "Quality", "Id")
  35. end
  36. self.showData = list
  37. elseif type >= Enum.CollectQualityType.NORMAL or type <= Enum.CollectQualityType.MVP then
  38. self.showData = self:GetHandBookPetCfgDatas(type - 1)
  39. end
  40. end
  41. function PetBookCtr:GetCurShowDatasLength()
  42. return self.showData and #self.showData or 0
  43. end
  44. function PetBookCtr:GetShowDataByIdx(idx)
  45. return self.showData and self.showData[idx] or nil
  46. end
  47. function PetBookCtr:GetPetBookOffsetCfgId(cfgId, offset)
  48. if not self.showData then return cfgId end
  49. for i = 1,#self.showData do
  50. if self.showData[i].Id == cfgId then
  51. if i + offset < 1 then
  52. return self.showData[#self.showData].Id
  53. elseif i + offset > #self.showData then
  54. return self.showData[1].Id
  55. else
  56. return self.showData[i + offset].Id
  57. end
  58. end
  59. end
  60. return cfgId
  61. end
  62. function PetBookCtr:OnDispose()
  63. self.showData = nil
  64. self.data = nil
  65. end
  66. return PetBookCtr