141 lines
7.3 KiB
Lua
141 lines
7.3 KiB
Lua
|
|
local EuipSlotItem = {}
|
||
|
|
local ConditionJudge = require("Common/ConditionJudge")
|
||
|
|
|
||
|
|
function EuipSlotItem:SetData(wnd, item, logicData, onClickOwner, onClickCB, needPar)
|
||
|
|
local isLeader = logicData[1]
|
||
|
|
local logicData1 = logicData[2]
|
||
|
|
local jobData = logicData[3]
|
||
|
|
local slots = logicData[4]
|
||
|
|
local slotIndex = logicData[5]
|
||
|
|
local idx = logicData[6]
|
||
|
|
|
||
|
|
item.mask:SetActive(logicData1 ~= nil and not isLeader and not logicData1.owned)
|
||
|
|
--item:SetActive(logicData1.isBattle)
|
||
|
|
--if logicData1.isBattle then
|
||
|
|
if slots == nil then
|
||
|
|
item.blank:SetActive(true)
|
||
|
|
item.cardPlus:SetActive(false)
|
||
|
|
|
||
|
|
item.textLv:SetActive(false)
|
||
|
|
|
||
|
|
item.icon:SetActive(false)
|
||
|
|
item.frame:SetActive(false)
|
||
|
|
item.level:SetActive(false)
|
||
|
|
|
||
|
|
--item.button.interactable = true
|
||
|
|
item.cardPlus:SetActive(false)
|
||
|
|
|
||
|
|
if logicData1 then
|
||
|
|
local slotDressRPStatus =
|
||
|
|
isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
|
||
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
|
||
|
|
item.redPointItem:SetActive((isLeader or logicData1.owned) and slotDressRPStatus ~= Enum.RedPointEnum.None)
|
||
|
|
item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
|
||
|
|
|
||
|
|
local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
|
||
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
item.blank:SetActive(idx > #slots or slots[idx].equip_id == 0)
|
||
|
|
item.icon:SetActive(idx <= #slots and slots[idx].equip_id > 0)
|
||
|
|
item.frame:SetActive(idx <= #slots and slots[idx].equip_id > 0)
|
||
|
|
item.level:SetActive(idx <= #slots and slots[idx].equip_id > 0)
|
||
|
|
|
||
|
|
--item.button.interactable = idx <= #slots and slots[idx].equip_id > 0
|
||
|
|
|
||
|
|
if logicData1 then
|
||
|
|
local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
|
||
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
|
||
|
|
local slotRefineRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
|
||
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(logicData1.id, idx)
|
||
|
|
item.redPointItem:SetActive((isLeader or logicData1.owned) and (slotDressRPStatus ~= Enum.RedPointEnum.None or slotRefineRPStatus ~= Enum.RedPointEnum.None))
|
||
|
|
item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
|
||
|
|
item.redPointItem.refine:SetActive(slotDressRPStatus == Enum.RedPointEnum.None and slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP)
|
||
|
|
end
|
||
|
|
|
||
|
|
if needPar then
|
||
|
|
item.par:SetActive(true)
|
||
|
|
item.equipFx.uIParticle.cachedParticleSystem:Play(true)
|
||
|
|
end
|
||
|
|
|
||
|
|
item.textLv:SetActive(idx <= #slots and slots[idx].level > 0)
|
||
|
|
for j = 1, Constant.CARD_SLOT_LIMIT do
|
||
|
|
item["slot"..j]:SetActive(false)
|
||
|
|
item["card"..j]:SetActive(false)
|
||
|
|
end
|
||
|
|
|
||
|
|
local isOpened = false
|
||
|
|
if idx <= #slots then
|
||
|
|
for j = 1, Constant.CARD_SLOT_LIMIT do
|
||
|
|
local id = slots[idx].card_id_list[j] or 0
|
||
|
|
local condition = ManagerContainer.CfgMgr:GetCardUnlockConditionById(idx * 100 + j)
|
||
|
|
if condition ~= nil then
|
||
|
|
local result = ConditionJudge:ConditionPassResult1(condition.UnlockingCondition[1])
|
||
|
|
item["slot"..j]:SetActive(result)
|
||
|
|
item["card"..j]:SetActive(result and id > 0)
|
||
|
|
if result then
|
||
|
|
isOpened = true
|
||
|
|
if id > 0 then
|
||
|
|
local cardData = ManagerContainer.CfgMgr:GetCardDataById(id)
|
||
|
|
CommonUtil.LoadIcon(wnd, Constant.Card_Quality_Icons[cardData.CardType], function (sprite)
|
||
|
|
item["card"..j].image.sprite = sprite
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
item.cardPlus:SetActive(isOpened)
|
||
|
|
if idx <= #slots and slots[idx].equip_id > 0 then
|
||
|
|
item.textLv.text.text = CommonUtil.StringConcat("+", slots[idx].level)
|
||
|
|
|
||
|
|
local itemCfgData = ManagerContainer.CfgMgr:GetItemById(slots[idx].equip_id)
|
||
|
|
|
||
|
|
if itemCfgData == nil then
|
||
|
|
LogError(slots[idx].equip_id.. " isnt exist in ItemCfg")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
local equipData = ManagerContainer.CfgMgr:GetEquipById(slots[idx].equip_id)
|
||
|
|
if equipData == nil then
|
||
|
|
LogError(slots[idx].equip_id.. " isnt exist in EquipCfg")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
CommonUtil.LoadIcon(wnd, itemCfgData.Icon, function (sprite)
|
||
|
|
item.icon.image.sprite = sprite
|
||
|
|
end, item, 'IconIcon')
|
||
|
|
|
||
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Icons[itemCfgData.Quality], function (sprite)
|
||
|
|
item.frame.image.sprite = sprite
|
||
|
|
end, item, 'IconFrame')
|
||
|
|
|
||
|
|
local divide = Constant.Quality_Equip_Divide[equipData.EquipLevel]
|
||
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_Equip_LV_Icons[divide[2]], function (sprite)
|
||
|
|
item.level.image.sprite = sprite
|
||
|
|
end, item, 'IconLevel')
|
||
|
|
|
||
|
|
if jobData then
|
||
|
|
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}
|
||
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.button, wnd, wnd.RefreshEquipTips, data)
|
||
|
|
end
|
||
|
|
|
||
|
|
local divide = Constant.Quality_Equip_Divide[equipData.EquipLevel]
|
||
|
|
local quality = divide[1]
|
||
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_EquipPlus_Icons[quality], function (sprite)
|
||
|
|
item.bgPlus.image.sprite = sprite
|
||
|
|
end)
|
||
|
|
else
|
||
|
|
if jobData then
|
||
|
|
local data = {cfgId = 0, num = 0, slotIndex = slotIndex, slotType = idx, cbOwner = wnd, cb = wnd.ChangeCurEquip, jobType = jobData.JobType}
|
||
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB, data)
|
||
|
|
end
|
||
|
|
|
||
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Default_Icon, function (sprite)
|
||
|
|
item.bgPlus.image.sprite = sprite
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
--end
|
||
|
|
end
|
||
|
|
|
||
|
|
return EuipSlotItem
|