427 lines
17 KiB
Lua
427 lines
17 KiB
Lua
local RuneShopRewardsItemCtr = {}
|
|
--战令悬赏每级
|
|
function RuneShopRewardsItemCtr:SetData(wnd, itemlua, logicData1, enterType, onClickOwner, onClickCB, params)
|
|
if logicData1 == nil then return end
|
|
self:SetIconDatatt(wnd, itemlua.rewardsLeft.iconItem, logicData1, enterType, onClickOwner, self.ShowItemTips, params,false)
|
|
self:SetIconDatatt(wnd, itemlua.rewardsRight.iconItem, logicData1, enterType, onClickOwner, self.ShowCashItemTips, params,true)
|
|
end
|
|
local function GetPath(path, isSmall)
|
|
return isSmall and path.."_s" or path
|
|
end
|
|
|
|
function RuneShopRewardsItemCtr:ShowItemTips(button, params)
|
|
|
|
local data = clone(params[0])
|
|
--LogError("进入了图标tips"..Inspect(data))
|
|
--data.displayBtn = true
|
|
local _extData = {_id = data.cfgData.ID, cfgId = data.cfgId}
|
|
local tipsdara = {}
|
|
|
|
tipsdara.cfgId = data.cfgData.Reward[1][1]
|
|
tipsdara.num = data.cfgData.Reward[1][2]
|
|
|
|
local itemCfgData = ManagerContainer.CfgMgr:GetItemById(data.cfgId)
|
|
if itemCfgData and itemCfgData.SkipInterface > 0 then
|
|
if data.state == nil then data.state = 0 end
|
|
|
|
data.state = Bit.bor(data.state, Bit.lshift(1, Enum.TipsEnterType.BtnGoto)) --data.state + CommonUtil.Get2Powers(Enum.TipsEnterType.BtnGoto)
|
|
end
|
|
if data.isReward == 2 then
|
|
ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EXPLORE_REWARD_REQ,{level = data.cfgData.Lv, reward_type = 1})
|
|
--LogError("领取普通奖励"..data.cfgData.Lv)
|
|
else
|
|
ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
|
|
end
|
|
|
|
end
|
|
|
|
function RuneShopRewardsItemCtr:ShowCashItemTips(button, params)
|
|
|
|
local data = clone(params[0])
|
|
--LogError("进入了图标tips"..Inspect(data))
|
|
--data.displayBtn = true
|
|
local _extData = {_id = data.cfgData.ID, cfgId = data.cfgId}
|
|
local tipsdara = {}
|
|
|
|
tipsdara.cfgId = data.cfgData.CashReward[1][1]
|
|
tipsdara.num = data.cfgData.CashReward[1][2]
|
|
|
|
|
|
local itemCfgData = ManagerContainer.CfgMgr:GetItemById(data.cfgId)
|
|
if itemCfgData and itemCfgData.SkipInterface > 0 then
|
|
if data.state == nil then data.state = 0 end
|
|
|
|
data.state = Bit.bor(data.state, Bit.lshift(1, Enum.TipsEnterType.BtnGoto)) --data.state + CommonUtil.Get2Powers(Enum.TipsEnterType.BtnGoto)
|
|
end
|
|
|
|
if data.isCashReward == 2 then
|
|
ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EXPLORE_REWARD_REQ,{level= data.cfgData.Lv,reward_type= 2})
|
|
--LogError("领取了高级奖励"..data.cfgData.Lv)
|
|
elseif data.isCashReward == 1 then
|
|
ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
|
|
else
|
|
if ManagerContainer.DataMgr.RuneShopDataMgr:GetRewardsData():GetRewardsIsCash() == 0 then
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRewardsBuyTips, {runeShopType, nil, 0})
|
|
else
|
|
ManagerContainer.LuaUIMgr:OpenTips(tipsdara, _extData)
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
function RuneShopRewardsItemCtr:SetIconDatatt(wnd, itemlua, logicData, enterType, onClickOwner, onClickCB, params , isAnvanced)
|
|
--LogError("bbb"..Inspect(logicData))
|
|
local cfgdatat
|
|
local redpointState = false
|
|
local baseData = ManagerContainer.DataMgr.RuneShopDataMgr:GetShopData(Enum.RuneShopType.Rewards,nil,false)
|
|
if isAnvanced then
|
|
cfgdatat = logicData.cfgData.CashReward
|
|
-- if logicData.isCashReward == 0 and baseData:GetRewardsIsCash() == 1 then
|
|
-- local curlv = baseData:GetShowRewardCurLv()
|
|
-- if logicData.cfgData.lv < curlv or logicData.cfgData.lv == curlv then
|
|
-- redpointState = true
|
|
-- end
|
|
|
|
-- end
|
|
if logicData.isCashReward == 2 then
|
|
redpointState = true
|
|
end
|
|
|
|
--logicData.cfgData.isCash = 1
|
|
else
|
|
cfgdatat = logicData.cfgData.Reward
|
|
-- if logicData.isReward == 0 and baseData:GetRewardsIsCash() == 1 then
|
|
-- local curlv = baseData:GetShowRewardCurLv()
|
|
-- if logicData.cfgData.lv < curlv or logicData.cfgData.lv == curlv then
|
|
-- redpointState = true
|
|
-- end
|
|
|
|
-- end
|
|
if logicData.isReward == 2 then
|
|
redpointState = true
|
|
end
|
|
--logicData.cfgData.isCash = 0
|
|
end
|
|
|
|
if redpointState then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.RuneShopRewards, true)
|
|
end
|
|
local cfgId = cfgdatat[1][1]
|
|
local num = cfgdatat[1][2] or 0
|
|
local vip = cfgdatat.vip or 0
|
|
local strengthLevel = logicData.strengthLevel or 0
|
|
local advLv = logicData.advanceLevel or 0
|
|
|
|
local gridViewItem = itemlua.gameObject:GetComponent(Enum.TypeInfo.UIGridViewMark)
|
|
local isSmall = gridViewItem.OriName == "IconSmallItem"
|
|
|
|
itemlua.icon.image.sprite = nil
|
|
|
|
itemlua.conertips.gameObject:SetActive(logicData.cornerType and logicData.cornerType > 0);
|
|
if logicData.cornerType == Enum.FromType.Extrra then
|
|
itemlua.text.text.text = I18N.T("SignInTips2"); --额外
|
|
--TODO:将来判定是否要改变角标图片
|
|
end
|
|
|
|
local itemCfgData, cfgData, iconType, quality
|
|
if enterType == Enum.ItemIEnterType.Partner then
|
|
itemCfgData = ManagerContainer.CfgMgr:GetPartnerMapItemDataById(cfgId)
|
|
|
|
if itemCfgData == nil then
|
|
LogError(cfgId.. " partner isnt exist in ItemCfg")
|
|
return
|
|
end
|
|
iconType = Enum.ItemType.Parter
|
|
cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(cfgId)
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in PartnerCfg")
|
|
return
|
|
end
|
|
else
|
|
itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
|
|
|
|
if itemCfgData == nil then
|
|
LogError(cfgId.. " isnt exist in ItemCfg")
|
|
return
|
|
end
|
|
iconType = itemCfgData.ResType
|
|
|
|
cfgData = itemCfgData
|
|
if iconType == Enum.ItemType.Equip then
|
|
cfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in EquipCfg")
|
|
return
|
|
end
|
|
elseif iconType == Enum.ItemType.Card then
|
|
cfgData = ManagerContainer.CfgMgr:GetCardDataById(cfgId)
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in CardCfg")
|
|
return
|
|
end
|
|
elseif iconType == Enum.ItemType.FashionPaper then
|
|
cfgData = ManagerContainer.CfgMgr:GetFashionPaperById(cfgId)
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in FashionPaperCfg")
|
|
return
|
|
end
|
|
elseif iconType == Enum.ItemType.Parter then
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in PartnerCfg")
|
|
return
|
|
end
|
|
elseif iconType == Enum.ItemType.Pet then
|
|
cfgData = ManagerContainer.CfgMgr:GetPetDataById(cfgId)
|
|
if cfgData == nil then
|
|
LogError(cfgId.. " isnt exist in PetCfg")
|
|
return
|
|
end
|
|
if itemCfgData.Quality == 0 then
|
|
itemCfgData.Quality = cfgData.Fame
|
|
end
|
|
if itemCfgData.Icon == "" then
|
|
itemCfgData.Icon = cfgData.Icon
|
|
end
|
|
end
|
|
end
|
|
|
|
quality = itemCfgData.Quality
|
|
|
|
local qualityFxName = nil
|
|
local frameIcon = Constant.Quality_Frame_Icons[quality]
|
|
if quality >= Enum.QualityType.Purple then
|
|
qualityFxName = Constant.Quality_FX[quality - Enum.QualityType.Blue]
|
|
end
|
|
|
|
if iconType == Enum.ItemType.Compose and itemCfgData.DebrisShow == 2 then
|
|
iconType = Enum.ItemType.Pet
|
|
end
|
|
|
|
if iconType == Enum.ItemType.Equip or iconType == Enum.ItemType.Card then
|
|
frameIcon = Constant.Quality_CardBg_Icons[quality]
|
|
elseif iconType == Enum.ItemType.Pet then
|
|
frameIcon = Constant.Quality_HeadFrame_Icons[quality]
|
|
elseif iconType == Enum.ItemType.Parter then
|
|
frameIcon = strengthLevel == 0 and Constant.Quality_White_Head_Frame_Icon or Constant.Quality_HeadFrame_Icons[math.min(strengthLevel, #Constant.Quality_HeadFrame_Icons)]
|
|
elseif iconType == Enum.ItemType.FashionPaper then
|
|
frameIcon = Constant.Quality_Frame_Icons[quality]
|
|
end
|
|
|
|
if itemlua.uiParticle ~= nil and itemlua.uiParticle.EffectName ~= qualityFxName then
|
|
wnd:RemoveEffect(itemlua,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
|
|
ManagerContainer.ResMgr:RecycleGO(Constants.EffectPath,itemlua.uiParticle.EffectName,itemlua.uiParticle.fxGo)
|
|
itemlua.uiParticle = nil
|
|
end
|
|
if quality >= 5 then
|
|
if qualityFxName == nil then
|
|
itemlua.qualityFX:SetActive(false)
|
|
else
|
|
if itemlua.uiParticle == nil then
|
|
AW.async(function()
|
|
local fxGo = AW.await(ManagerContainer.ResMgr:LuaGetGoFromPoolAsync(Constants.EffectPath,qualityFxName))
|
|
if fxGo~= nil then
|
|
fxGo.transform:SetParent(itemlua.qualityFX.transform)
|
|
fxGo.transform.localPosition = Vector3.zero
|
|
fxGo.transform.localRotation = Quaternion.identity
|
|
fxGo.transform.localScale = Vector3.one
|
|
|
|
--if tolua.getpeer(fxGo) == nil then
|
|
-- tolua.setpeer(fxGo, {})
|
|
--end
|
|
itemlua.uiParticle = {}
|
|
itemlua.uiParticle.fxGo = fxGo
|
|
itemlua.uiParticle.EffectName = qualityFxName
|
|
|
|
local sizeX = itemlua.rectTransform.rect.width
|
|
--判断是否父节点为grid
|
|
if itemlua.transform.parent then
|
|
local parent = itemlua.transform.parent
|
|
local parentScale = parent.localScale.x
|
|
|
|
local grid = parent:GetComponent(Enum.TypeInfo.GridLayoutGroup)
|
|
local width = sizeX
|
|
if grid then
|
|
width = grid.cellSize.x
|
|
end
|
|
|
|
sizeX = width * parentScale
|
|
end
|
|
|
|
local scaleX = sizeX/160
|
|
--local sizeY = itemlua.layoutElement.preferredHeight
|
|
--local scaleY = sizeY/160
|
|
local uiParticle = fxGo:GetComponent(Enum.TypeInfo.UIParticle)
|
|
if uiParticle then
|
|
uiParticle.scale = scaleX
|
|
end
|
|
|
|
wnd:AddNewEffect(itemlua,qualityFxName,fxGo)
|
|
itemlua.qualityFX:SetActive(true)
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
local _iconPath = itemCfgData.Icon
|
|
if logicData.isLeader then _iconPath = logicData.leaderIcon end
|
|
|
|
|
|
CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
|
|
|
|
CommonUtil.LoadIcon(wnd, _iconPath, function (sprite)
|
|
itemlua.icon.image.sprite = sprite
|
|
end, itemlua, 'IconIcon')
|
|
|
|
CommonUtil.LoadIcon(wnd, GetPath(frameIcon, isSmall), function (sprite)
|
|
itemlua.frame.image.sprite = sprite
|
|
end, itemlua, 'IconFrame')
|
|
|
|
itemlua.frame.image.material = quality >= 3 and ManagerContainer.ResMgr:GetFrameQualityMat() or nil
|
|
|
|
local needLevel = iconType == Enum.ItemType.Equip or iconType == Enum.ItemType.Card
|
|
itemlua.level:SetActive(needLevel)
|
|
if needLevel then
|
|
local level = 1
|
|
if iconType == Enum.ItemType.Equip then
|
|
local divide = Constant.Quality_Equip_Divide[cfgData.EquipLevel]
|
|
level = divide[2]
|
|
elseif iconType == Enum.ItemType.Card then
|
|
level = cfgData.CardLevel
|
|
end
|
|
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_Equip_LV_Icons[level], function (sprite)
|
|
itemlua.level.image.sprite = sprite
|
|
end, itemlua, 'IconLevel')
|
|
end
|
|
|
|
itemlua.cardLabel:SetActive(iconType == Enum.ItemType.Card)
|
|
if iconType == Enum.ItemType.Card then
|
|
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_CardType_Icons[cfgData.CardType], function (sprite)
|
|
itemlua.cardLabel.image.sprite = sprite
|
|
end, itemlua, 'IconType')
|
|
end
|
|
|
|
local needJob = iconType == Enum.ItemType.Parter or iconType == Enum.ItemType.Pet
|
|
itemlua.job:SetActive(needJob)
|
|
if needJob then
|
|
local jobIcon = cfgData.JobIcon
|
|
if iconType == Enum.ItemType.Pet then
|
|
jobIcon = Constant.Natural_Icons..itemCfgData.NatureType
|
|
end
|
|
CommonUtil.LoadIcon(wnd, jobIcon, function (sprite)
|
|
itemlua.job.image.sprite = sprite
|
|
end, itemlua, 'IconJob')
|
|
end
|
|
|
|
local sexLabelVisible = false
|
|
if iconType == Enum.ItemType.FashionPaper then
|
|
local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(cfgData.FashionId)
|
|
if fashionCfgData and fashionCfgData.FashionSex and fashionCfgData.FashionSex > 0 then
|
|
sexLabelVisible = true
|
|
CommonUtil.LoadIcon(wnd, Constant.Paper_Sex_Icons[fashionCfgData.FashionSex], function (sprite)
|
|
itemlua.sexLabel.image.sprite = sprite
|
|
end, itemlua, 'IconSex')
|
|
end
|
|
end
|
|
itemlua.sexLabel:SetActive(sexLabelVisible)
|
|
|
|
if iconType ~= Enum.ItemType.Parter then
|
|
if num >= 10000 then
|
|
if iconType < 100 then
|
|
itemlua.num.text.text = CommonUtil.FormatNumber(num)
|
|
else
|
|
itemlua.num.text.text = CommonUtil.GetPreciseDecimalFloor(num/10000, 1) .. "w"
|
|
end
|
|
else
|
|
itemlua.num.text.text = tostring(num)
|
|
end
|
|
else
|
|
itemlua.num.text.text = "Lv."..tostring(num)
|
|
end
|
|
itemlua.redPoint:SetActive(redpointState)
|
|
|
|
--if enterType == Enum.ItemIEnterType.Bag and num > 1 then
|
|
-- itemlua.num:SetActive(true)
|
|
--else
|
|
-- itemlua.num:SetActive(false)
|
|
--end
|
|
|
|
itemlua.num:SetActive(num > 1)
|
|
|
|
itemlua.refineLv:SetActive(enterType == Enum.ItemIEnterType.EquipTips and num > 0)
|
|
itemlua.refineLv.text.text = "+"..num
|
|
|
|
itemlua.limited:SetActive(itemCfgData and itemCfgData.ItemTime > 0)
|
|
|
|
--itemlua.advence:SetActive(iconType == Enum.ItemType.Pet and advLv > 0)
|
|
--itemlua.advenceLv.text.text = "+"..advLv
|
|
|
|
--vip
|
|
itemlua.vip:SetActive(vip > 0)
|
|
if vip > 0 then
|
|
local vipCfgData = ManagerContainer.CfgMgr:GetVipCfgById(vip)
|
|
if vipCfgData then
|
|
CommonUtil.LoadIcon(wnd, vipCfgData.VipMarkIcon, function (sprite)
|
|
itemlua.label.image.sprite = sprite
|
|
end, itemlua, 'IconVip')
|
|
end
|
|
end
|
|
|
|
self:DebrisShow(wnd, itemCfgData, itemlua)
|
|
|
|
itemlua.repeatSign:SetActive(false)
|
|
if itemCfgData.ActivationItem > 0 then
|
|
local isRepeated = ManagerContainer.DataMgr.KeepSakeBookData:IsKeepSakeMaxLv(itemCfgData.ActivationItem)
|
|
itemlua.repeatSign:SetActive(isRepeated)
|
|
end
|
|
|
|
if onClickOwner and onClickCB then
|
|
itemlua.bg.button.enabled = true
|
|
onClickOwner.uiBase:AddButtonUniqueEventListener(itemlua.bg.button, onClickOwner, onClickCB, logicData, itemlua, params)
|
|
else
|
|
itemlua.bg.button.enabled = false
|
|
end
|
|
return itemCfgData
|
|
end
|
|
|
|
function RuneShopRewardsItemCtr:DebrisShow(wnd, itemCfgData, itemlua)
|
|
itemlua.piece:SetActive(itemCfgData.DebrisShow == 2 or itemCfgData.DebrisShow == 4)
|
|
|
|
if itemCfgData.DebrisShow == 3 or itemCfgData.DebrisShow == 4 then
|
|
if not itemlua.cardLabel.activeSelf then
|
|
itemlua.cardLabel:SetActive(true)
|
|
end
|
|
CommonUtil.LoadIcon(wnd, Constant.Quality_Card_Icons[itemCfgData.Quality], function (sprite)
|
|
itemlua.cardLabel.image.sprite = sprite
|
|
end, itemlua, 'IconType')
|
|
elseif itemCfgData.DebrisShow == 1 or itemCfgData.DebrisShow == 2 then
|
|
itemlua.cardLabel:SetActive(false)
|
|
end
|
|
|
|
if itemCfgData.DebrisShow == 1 then
|
|
--通用宠物碎片
|
|
CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
|
|
elseif itemCfgData.DebrisShow == 2 then
|
|
--通用定向宠物碎片
|
|
CommonUtil.SetTotalChildrenGray(itemlua.icon, true)
|
|
local iconPath = Constant.Pet_Debries_Icons[itemCfgData.Quality]
|
|
CommonUtil.LoadIcon(wnd, iconPath, function (sprite)
|
|
itemlua.piece.image.sprite = sprite
|
|
end, itemlua, 'piece')
|
|
elseif itemCfgData.DebrisShow == 3 then
|
|
--通用卡片碎片
|
|
CommonUtil.SetTotalChildrenGray(itemlua.icon, false)
|
|
elseif itemCfgData.DebrisShow == 4 then
|
|
--通用定向卡片碎片
|
|
CommonUtil.SetTotalChildrenGray(itemlua.icon, true)
|
|
local iconPath = Constant.Card_Debries_Icons[itemCfgData.Quality]
|
|
CommonUtil.LoadIcon(wnd, iconPath, function (sprite)
|
|
itemlua.piece.image.sprite = sprite
|
|
end, itemlua, 'piece')
|
|
end
|
|
end
|
|
|
|
return RuneShopRewardsItemCtr |