ro-webgl/Assets/Lua/UI/Common/EuipSlotItemCtr.lua
2021-12-21 09:40:39 +08:00

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