SlotItemCtr.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. local SlotItemCtr = {}
  2. local EquipItemCtr = require("Common/EquipItemCtr")
  3. local ConditionJudge = require("Common/ConditionJudge")
  4. local RedPointItemCtr = require("Common/RedPointItemCtr")
  5. function SlotItemCtr:SetData(wnd, item, logicData, onClickOwner, onClickCB, needPar)
  6. local isLeader = logicData[1]
  7. local logicData1 = logicData[2]
  8. local jobData = logicData[3]
  9. local slots = logicData[4]
  10. local slotIndex = logicData[5]
  11. local idx = logicData[6]
  12. item.mask:SetActive(not isLeader and not logicData1.owned)
  13. --item:SetActive(logicData1.isBattle)
  14. --if logicData1.isBattle then
  15. if slots == nil then
  16. item.cardPlus:SetActive(false)
  17. item.lv:SetActive(false)
  18. item.equipItem:SetActive(false)
  19. item.button:SetActive(true)
  20. item.cardPlus:SetActive(false)
  21. local slotDressRPStatus =
  22. isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  23. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  24. item.redPointItem:SetActive((isLeader or logicData1.owned) and slotDressRPStatus ~= Enum.RedPointEnum.None)
  25. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  26. local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
  27. wnd.uiBase:AddButtonUniqueEventListener(item.button.button, onClickOwner, onClickCB, data)
  28. else
  29. item.equipItem:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  30. local equipLua = item.equipItem
  31. item.button:SetActive(idx > #slots or slots[idx].equip_id == 0)
  32. local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  33. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  34. local slotRefineRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
  35. or ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(logicData1.id, idx)
  36. item.redPointItem:SetActive((isLeader or logicData1.owned) and (slotDressRPStatus ~= Enum.RedPointEnum.None or slotRefineRPStatus ~= Enum.RedPointEnum.None))
  37. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  38. item.redPointItem.refine:SetActive(slotDressRPStatus == Enum.RedPointEnum.None and slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP)
  39. if needPar then
  40. item.par:SetActive(true)
  41. item.equipFx.uIParticle.cachedParticleSystem:Play(true)
  42. end
  43. item.lv:SetActive(idx <= #slots and slots[idx].level > 0)
  44. for j = 1, Constant.CARD_SLOT_LIMIT do
  45. item["slot"..j]:SetActive(false)
  46. item["card"..j]:SetActive(false)
  47. end
  48. local isOpened = false
  49. if idx <= #slots then
  50. for j = 1, Constant.CARD_SLOT_LIMIT do
  51. local id = slots[idx].card_id_list[j] or 0
  52. local condition = ManagerContainer.CfgMgr:GetCardUnlockConditionById(idx * 100 + j)
  53. if condition ~= nil then
  54. local result = ConditionJudge:ConditionPassResult1(condition.UnlockingCondition)
  55. item["slot"..j]:SetActive(result)
  56. item["card"..j]:SetActive(result and id > 0)
  57. if result then
  58. isOpened = true
  59. if id > 0 then
  60. local cardData = ManagerContainer.CfgMgr:GetCardDataById(id)
  61. CommonUtil.LoadIcon(wnd, Constant.Card_Quality_Icons[cardData.CardType], function (sprite)
  62. item["card"..j].image.sprite = sprite
  63. end)
  64. end
  65. end
  66. end
  67. end
  68. end
  69. item.cardPlus:SetActive(isOpened)
  70. if idx <= #slots and slots[idx].equip_id > 0 then
  71. item.lv.text.text = CommonUtil.StringConcat("+", slots[idx].level)
  72. 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}
  73. EquipItemCtr:SetData(wnd, equipLua,
  74. data,
  75. Enum.ItemIEnterType.HeroEquip,
  76. wnd,
  77. wnd.RefreshEquipTips)
  78. local equipCfgData = ManagerContainer.CfgMgr:GetEquipById(slots[idx].equip_id)
  79. local divide = Constant.Quality_Equip_Divide[equipCfgData.EquipLevel]
  80. local quality = divide[1]
  81. CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Icons[quality], function (sprite)
  82. item.bgPlus.image.sprite = sprite
  83. end)
  84. else
  85. local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
  86. wnd.uiBase:AddButtonUniqueEventListener(item.button.button, onClickOwner, onClickCB, data)
  87. CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Default_Icon, function (sprite)
  88. item.bgPlus.image.sprite = sprite
  89. end)
  90. end
  91. end
  92. --end
  93. end
  94. return SlotItemCtr