207 lines
11 KiB
Lua
207 lines
11 KiB
Lua
local RoleEquipSlotItemCtr = {}
|
|
local ConditionJudge = require("Common/ConditionJudge")
|
|
local IconItemCtr = require("Common/IconItemCtr")
|
|
|
|
function RoleEquipSlotItemCtr:SetData(wnd, item, logicData, onClickOwner, onClickCB, onClickCard, 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]
|
|
local refreshEquipTips = logicData[7]
|
|
local _cardIdList = logicData[8] --查看别的玩家的时候这个是直接传进来的
|
|
|
|
item.mask:SetActive(logicData1 ~= nil and not isLeader and not logicData1.owned)
|
|
item.iconItem.bg.button.image.raycastTarget = false;
|
|
if slots == nil then
|
|
item.blank:SetActive(true)
|
|
item.cardPlus:SetActive(false)
|
|
item.iconItem:SetActive(false);
|
|
|
|
if logicData1 then
|
|
local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
|
|
|
|
item.redPointItem.bg:SetActive(true)
|
|
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 }
|
|
--LogError("--1--")
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.weaponIconGroup.button, onClickOwner, onClickCB, data)
|
|
end
|
|
--[[
|
|
if _isTipBc then
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.button, onClickOwner, onClickCB)
|
|
end]]--
|
|
else
|
|
item.blank:SetActive(idx > #slots or slots[idx].equip_id == 0)
|
|
item.iconItem:SetActive(idx <= #slots and slots[idx].equip_id > 0 );
|
|
--[[
|
|
item.iconItem.icon:SetActive(idx <= #slots and slots[idx].equip_id > 0)
|
|
item.iconItem.frame:SetActive(idx <= #slots and slots[idx].equip_id > 0)
|
|
item.iconItem.level:SetActive(idx <= #slots and slots[idx].equip_id > 0)]]--
|
|
local slotRefineRPStatus = false
|
|
if logicData1 then
|
|
local cardSlotRPStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetRoleCardSlotRP(slotIndex, idx)
|
|
local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(20)
|
|
if not unlockState then
|
|
cardSlotRPStatus = Enum.RedPointEnum.None
|
|
end
|
|
item.redPointItem.bg:SetActive(cardSlotRPStatus ~= Enum.RedPointEnum.CardSlotRP)
|
|
item.redPointItem.cardOpen:SetActive(cardSlotRPStatus == Enum.RedPointEnum.CardSlotRP)
|
|
if cardSlotRPStatus ~= Enum.RedPointEnum.CardSlotRP then
|
|
local slotDressRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(logicData1.id, idx)
|
|
slotRefineRPStatus = isLeader and ManagerContainer.RedPointMgr.HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
|
|
or ManagerContainer.RedPointMgr.HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(logicData1.id, idx)
|
|
item.redPointItem.equipment:SetActive(slotDressRPStatus == Enum.RedPointEnum.EquipDressRP)
|
|
|
|
local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
|
|
item.redPointItem.refine:SetActive(slotDressRPStatus == Enum.RedPointEnum.None and slotRefineRPStatus == Enum.RedPointEnum.EquipRefineRP and unlockState)
|
|
end
|
|
|
|
item.redPointItem:SetActive((isLeader or logicData1.owned) and (item.redPointItem.cardOpen.activeSelf or item.redPointItem.equipment.activeSelf or item.redPointItem.refine.activeSelf))
|
|
end
|
|
|
|
if needPar then
|
|
--item.par:SetActive(true)
|
|
item.equipFx.uIParticle:PlayCachedParticalSystem(true)
|
|
end
|
|
|
|
item.iconItem.num: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 _setCard = function(result, id, j)
|
|
item["slot" .. j]:SetActive(result)
|
|
item["card" .. j]:SetActive(result and id > 0)
|
|
if result then
|
|
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
|
|
|
|
local isOpened = false
|
|
local _hasCardIdList = _cardIdList ~= nil;
|
|
if idx <= #slots then
|
|
for j = 1, Constant.CARD_SLOT_LIMIT do
|
|
if _hasCardIdList then --TODO:目前查看他人的时候没有关卡信息,所以暂时只考虑插了卡的卡片槽位,后续如果策划有管卡信息的需求要求服务器一定要传过来,再改这里
|
|
local id = slots[idx].card_id_list[j] or 0;
|
|
if id > 0 then
|
|
isOpened = true;
|
|
_setCard(true, id, j);
|
|
end
|
|
else
|
|
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])
|
|
if result then isOpened = true; end
|
|
_setCard(result, id, j);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
--item.cardPlus:SetActive(isOpened)
|
|
if idx <= #slots and slots[idx].equip_id > 0 then
|
|
local _iconItemLogic = {
|
|
cfgId = slots[idx].equip_id;
|
|
num = slots[idx].level;
|
|
}
|
|
--local _iconItemLua = CommonUtil.BindGridViewItem2LuaStatic("IconItem", item.iconItem.gameObject)
|
|
IconItemCtr:SetData(wnd, item.iconItem, _iconItemLogic, Enum.ItemIEnterType.EquipTips, nil, nil)
|
|
if jobData then
|
|
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 }
|
|
--LogError("--2--")
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.weaponIconGroup.button, wnd, refreshEquipTips, data)
|
|
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
|
|
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 }
|
|
--LogError("--3--")
|
|
wnd.uiBase:AddButtonUniqueEventListener(item.weaponIconGroup.button, onClickOwner, onClickCB, data)
|
|
end
|
|
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_CardBg_Default_Icon, function(sprite)
|
|
item.bgPlus.image.sprite = sprite
|
|
end)
|
|
end
|
|
end
|
|
|
|
self:RefreshWeaponCards(item, idx, slots, onClickCard)
|
|
end
|
|
|
|
function RoleEquipSlotItemCtr:RefreshWeaponCards(item, slotType, slots, onClickCard)
|
|
AW.async(function()
|
|
if slots ~= nil then
|
|
local cardList = slots[slotType].card_id_list
|
|
local list = {}
|
|
for i = 1, Constant.CARD_SLOT_LIMIT do
|
|
local condition = ManagerContainer.CfgMgr:GetCardUnlockConditionById(slotType * 100 + i)
|
|
if condition ~= nil then
|
|
list[#list + 1] = {cfgId = cardList[i] ~= nil and cardList[i] or 0, condition = condition.UnlockingCondition[1], idx = i}
|
|
end
|
|
end
|
|
for k,v in pairs(list) do
|
|
local cardIcon = item["cardIcon"..k]
|
|
cardIcon.owned:SetActive(v.cfgId > 0)
|
|
cardIcon.gameObject:SetActive(true)
|
|
local result, val,content = ConditionJudge:ConditionPassResult1(v.condition)
|
|
if v.cfgId > 0 then
|
|
IconItemCtr:SetData(item, cardIcon.iconItem, v, nil, item, onClickCard)
|
|
end
|
|
local _isView = true
|
|
local _showLock = not result;
|
|
if _isView then
|
|
_showLock = false
|
|
cardIcon.unowned:SetActive(v.cfgId == 0)
|
|
else
|
|
cardIcon.unowned:SetActive(v.cfgId == 0 and result)
|
|
end
|
|
cardIcon.locked:SetActive(_showLock)
|
|
cardIcon.lvLocked.text.text = content
|
|
|
|
if result then
|
|
if item.rpGos == nil then
|
|
item.rpGos = {}
|
|
end
|
|
local rpState = ManagerContainer.RedPointMgr.HeroRPCtr:GetRoleCardSlotRP(slotIndex, slotType, k - 1)
|
|
if rpState == Enum.RedPointEnum.CardSlotRP then
|
|
if item.rpGos[k] then
|
|
item.rpGos[k]:SetActive(true)
|
|
else
|
|
local redPointGo = AW.await(ManagerContainer.ResMgr:LuaGetGoFromPoolAsync(Constants.UICommonPath, Enum.RPPrefab[Enum.RPType.CardOpen]))
|
|
item.rpGos[k] = redPointGo
|
|
item.rpGos[k].transform:SetParent(cardIcon.rpPoint.transform)
|
|
item.rpGos[k].transform.localPosition = Vector3.zero
|
|
item.rpGos[k].transform.localScale = Vector3.one
|
|
|
|
item.rpGos[k]:SetActive(true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
return RoleEquipSlotItemCtr |