EquipSlotItemNewCtr.lua 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. local EquipSlotItemNewCtr = {}
  2. local ConditionJudge = require("Common/ConditionJudge")
  3. local IconItemCtr = require("Common/IconItemCtr")
  4. function EquipSlotItemNewCtr:SetData(wnd, item, logicData, onClickOwner, onClickCB, needPar)
  5. local isLeader = logicData[1]
  6. local logicData1 = logicData[2]
  7. local jobData = logicData[3]
  8. local slots = logicData[4]
  9. local slotIndex = logicData[5]
  10. local idx = logicData[6]
  11. local refreshEquipTips = logicData[7]
  12. local _cardIdList = logicData[8] --查看别的玩家的时候这个是直接传进来的
  13. item.mask:SetActive(logicData1 ~= nil and not isLeader and not logicData1.owned)
  14. item.iconItem.bg.button.image.raycastTarget = false;
  15. if slots == nil then
  16. item.blank:SetActive(true)
  17. item.cardPlus:SetActive(false)
  18. item.iconItem:SetActive(false);
  19. if logicData1 then
  20. local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  21. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  22. item.redPointItem.bg:SetActive(true)
  23. item.redPointItem:SetActive((isLeader or logicData1.owned) and slotDressRPStatus ~= Enum.RedPointEnum.None)
  24. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  25. local data = { cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType }
  26. wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
  27. end
  28. --[[
  29. if _isTipBc then
  30. wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB)
  31. end]]--
  32. else
  33. item.blank:SetActive(idx > #slots or slots[idx].equip_id == 0)
  34. item.iconItem:SetActive(idx <= #slots and slots[idx].equip_id > 0 );
  35. --[[
  36. item.iconItem.icon:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  37. item.iconItem.frame:SetActive(idx <= #slots and slots[idx].equip_id > 0)
  38. item.iconItem.level:SetActive(idx <= #slots and slots[idx].equip_id > 0)]]--
  39. local slotRefineRPStatus = false
  40. if logicData1 then
  41. local cardSlotRPStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetRoleCardSlotRP(slotIndex, idx)
  42. local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(20)
  43. if not unlockState then
  44. cardSlotRPStatus = Enum.RedPointEnum.None
  45. end
  46. item.redPointItem.bg:SetActive(cardSlotRPStatus ~= Enum.RedPointEnum.CardSlotRP)
  47. item.redPointItem.cardOpen:SetActive(cardSlotRPStatus == Enum.RedPointEnum.CardSlotRP)
  48. if cardSlotRPStatus ~= Enum.RedPointEnum.CardSlotRP then
  49. local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  50. or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
  51. slotRefineRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
  52. or ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(logicData1.id, idx)
  53. item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
  54. local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  55. item.redPointItem.refine:SetActive(slotDressRPStatus == Enum.RedPointEnum.None and slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP and unlockState)
  56. end
  57. item.redPointItem:SetActive((isLeader or logicData1.owned) and (item.redPointItem.cardOpen.activeSelf or item.redPointItem.equipment.activeSelf or item.redPointItem.refine.activeSelf))
  58. end
  59. if needPar then
  60. --item.par:SetActive(true)
  61. item.equipFx.uIParticle:PlayCachedParticalSystem(true)
  62. end
  63. item.iconItem.num:SetActive(idx <= #slots and slots[idx].level > 0)
  64. for j = 1, Constant.CARD_SLOT_LIMIT do
  65. item["slot" .. j]:SetActive(false)
  66. item["card" .. j]:SetActive(false)
  67. end
  68. local _setCard = function(result, id, j)
  69. item["slot" .. j]:SetActive(result)
  70. item["card" .. j]:SetActive(result and id > 0)
  71. if result then
  72. if id > 0 then
  73. local cardData = ManagerContainer.CfgMgr:GetCardDataById(id)
  74. CommonUtil.LoadIcon(wnd, Constant.Card_Quality_Icons[cardData.CardType], function(sprite)
  75. item["card" .. j].image.sprite = sprite
  76. end)
  77. end
  78. end
  79. end
  80. local isOpened = false
  81. local _hasCardIdList = _cardIdList ~= nil;
  82. if idx <= #slots then
  83. for j = 1, Constant.CARD_SLOT_LIMIT do
  84. if _hasCardIdList then --TODO:目前查看他人的时候没有关卡信息,所以暂时只考虑插了卡的卡片槽位,后续如果策划有管卡信息的需求要求服务器一定要传过来,再改这里
  85. local id = slots[idx].card_id_list[j] or 0;
  86. if id > 0 then
  87. isOpened = true;
  88. _setCard(true, id, j);
  89. end
  90. else
  91. local id = slots[idx].card_id_list[j] or 0
  92. local condition = ManagerContainer.CfgMgr:GetCardUnlockConditionById(idx * 100 + j)
  93. if condition ~= nil then
  94. local result = ConditionJudge:ConditionPassResult1(condition.UnlockingCondition[1])
  95. if result then isOpened = true; end
  96. _setCard(result, id, j);
  97. end
  98. end
  99. end
  100. end
  101. item.cardPlus:SetActive(isOpened)
  102. if idx <= #slots and slots[idx].equip_id > 0 then
  103. local _iconItemLogic = {
  104. cfgId = slots[idx].equip_id;
  105. num = slots[idx].level;
  106. }
  107. --local _iconItemLua = CommonUtil.BindGridViewItem2LuaStatic("IconItem", item.iconItem.gameObject)
  108. IconItemCtr:SetData(wnd, item.iconItem, _iconItemLogic, Enum.ItemIEnterType.EquipTips, nil, nil)
  109. if jobData then
  110. local data = { id = logicData1 and logicData1.id or 0, heroConfigId = logicData1.configId, 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 }
  111. wnd.uiBase:AddButtonUniqueEventListener(item.button, wnd, refreshEquipTips, data)
  112. end
  113. local equipData = ManagerContainer.CfgMgr:GetEquipById(slots[idx].equip_id)
  114. if equipData == nil then
  115. LogError(slots[idx].equip_id.. " isnt exist in EquipCfg")
  116. return
  117. end
  118. local divide = Constant.Quality_Equip_Divide[equipData.EquipLevel]
  119. local quality = divide[1]
  120. CommonUtil.LoadIcon(wnd, Constant.Quality_EquipPlus_Icons[quality], function (sprite)
  121. item.bgPlus.image.sprite = sprite
  122. end)
  123. else
  124. if jobData then
  125. local data = { cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType }
  126. wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
  127. end
  128. CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Default_Icon, function(sprite)
  129. item.bgPlus.image.sprite = sprite
  130. end)
  131. end
  132. end
  133. end
  134. return EquipSlotItemNewCtr