EuipSlotItemCtr.lua 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. local EuipSlotItem = {}
  2. local ConditionJudge = require("Common/ConditionJudge")
  3. function EuipSlotItem:SetData(wnd, item, logicData, onClickOwner, onClickCB, needPar)
  4. local isLeader = logicData[1]
  5. local logicData1 = logicData[2]
  6. local jobData = logicData[3]
  7. local slots = logicData[4]
  8. local slotIndex = logicData[5]
  9. local idx = logicData[6]
  10. item.mask:SetActive(logicData1 ~= nil and not isLeader and not logicData1.owned)
  11. --item:SetActive(logicData1.isBattle)
  12. --if logicData1.isBattle then
  13. if slots == nil then
  14. item.blank:SetActive(true)
  15. item.cardPlus:SetActive(false)
  16. item.textLv:SetActive(false)
  17. item.icon:SetActive(false)
  18. item.frame:SetActive(false)
  19. item.level:SetActive(false)
  20. --item.button.interactable = true
  21. item.cardPlus:SetActive(false)
  22. if logicData1 then
  23. local slotDressRPStatus =
  24. isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  25. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  26. item.redPointItem:SetActive((isLeader or logicData1.owned) and slotDressRPStatus ~= Enum.RedPointEnum.None)
  27. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  28. local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
  29. wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
  30. end
  31. else
  32. item.blank:SetActive(idx > #slots or slots[idx].equip_id == 0)
  33. item.icon:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  34. item.frame:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  35. item.level:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  36. --item.button.interactable = idx <= #slots and slots[idx].equip_id > 0
  37. if logicData1 then
  38. local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  39. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  40. local slotRefineRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
  41. or ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(logicData1.id, idx)
  42. item.redPointItem:SetActive((isLeader or logicData1.owned) and (slotDressRPStatus ~= Enum.RedPointEnum.None or slotRefineRPStatus ~= Enum.RedPointEnum.None))
  43. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  44. item.redPointItem.refine:SetActive(slotDressRPStatus == Enum.RedPointEnum.None and slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP)
  45. end
  46. if needPar then
  47. item.par:SetActive(true)
  48. item.equipFx.uIParticle.cachedParticleSystem:Play(true)
  49. end
  50. item.textLv:SetActive(idx <= #slots and slots[idx].level > 0)
  51. for j = 1, Constant.CARD_SLOT_LIMIT do
  52. item["slot"..j]:SetActive(false)
  53. item["card"..j]:SetActive(false)
  54. end
  55. local isOpened = false
  56. if idx <= #slots then
  57. for j = 1, Constant.CARD_SLOT_LIMIT do
  58. local id = slots[idx].card_id_list[j] or 0
  59. local condition = ManagerContainer.CfgMgr:GetCardUnlockConditionById(idx * 100 + j)
  60. if condition ~= nil then
  61. local result = ConditionJudge:ConditionPassResult1(condition.UnlockingCondition[1])
  62. item["slot"..j]:SetActive(result)
  63. item["card"..j]:SetActive(result and id > 0)
  64. if result then
  65. isOpened = true
  66. if id > 0 then
  67. local cardData = ManagerContainer.CfgMgr:GetCardDataById(id)
  68. CommonUtil.LoadIcon(wnd, Constant.Card_Quality_Icons[cardData.CardType], function (sprite)
  69. item["card"..j].image.sprite = sprite
  70. end)
  71. end
  72. end
  73. end
  74. end
  75. end
  76. item.cardPlus:SetActive(isOpened)
  77. if idx <= #slots and slots[idx].equip_id > 0 then
  78. item.textLv.text.text = CommonUtil.StringConcat("+", slots[idx].level)
  79. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(slots[idx].equip_id)
  80. if itemCfgData == nil then
  81. LogError(slots[idx].equip_id.. " isnt exist in ItemCfg")
  82. return
  83. end
  84. local equipData = ManagerContainer.CfgMgr:GetEquipById(slots[idx].equip_id)
  85. if equipData == nil then
  86. LogError(slots[idx].equip_id.. " isnt exist in EquipCfg")
  87. return
  88. end
  89. CommonUtil.LoadIcon(wnd, itemCfgData.Icon, function (sprite)
  90. item.icon.image.sprite = sprite
  91. end, item, 'IconIcon')
  92. CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Icons[itemCfgData.Quality], function (sprite)
  93. item.frame.image.sprite = sprite
  94. end, item, 'IconFrame')
  95. local divide = Constant.Quality_Equip_Divide[equipData.EquipLevel]
  96. CommonUtil.LoadIcon(wnd, Constant.Quality_Equip_LV_Icons[divide[2]], function (sprite)
  97. item.level.image.sprite = sprite
  98. end, item, 'IconLevel')
  99. if jobData then
  100. local data = {cfgId = slots[idx].equip_id, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, cb1 = wnd.PutOffCurEquip, jobType = jobData.JobType, canRefine = slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP}
  101. wnd.uiBase:AddButtonUniqueEventListener(item.button, wnd, wnd.RefreshEquipTips, data)
  102. end
  103. local divide = Constant.Quality_Equip_Divide[equipData.EquipLevel]
  104. local quality = divide[1]
  105. CommonUtil.LoadIcon(wnd, Constant.Quality_EquipPlus_Icons[quality], function (sprite)
  106. item.bgPlus.image.sprite = sprite
  107. end)
  108. else
  109. if jobData then
  110. local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
  111. wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
  112. end
  113. CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Default_Icon, function (sprite)
  114. item.bgPlus.image.sprite = sprite
  115. end)
  116. end
  117. end
  118. --end
  119. end
  120. return EuipSlotItem