152 lines
5.6 KiB
Lua
152 lines
5.6 KiB
Lua
----- 归元弹窗 -----
|
||
local this = {}
|
||
--传入父脚本模块
|
||
local parent
|
||
--层级
|
||
local sortingOrder = 0
|
||
--传入不定参
|
||
local _args = {}
|
||
--传入选择英雄计算返回奖励数据列表
|
||
local dropList = {}
|
||
--item容器
|
||
local itemList = {}
|
||
--传入选择英雄
|
||
local selectHeroData
|
||
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
local itemNum = nil
|
||
local heroUseCount = nil
|
||
local heroUseItemId = nil
|
||
function this:InitComponent(gameObject)
|
||
this.spLoader = SpriteLoader.New()
|
||
this.titleText = Util.GetGameObject(gameObject, "TitleText"):GetComponent("Text")
|
||
this.bodyText = Util.GetGameObject(gameObject, "BodyText"):GetComponent("Text")
|
||
this.cancelBtn = Util.GetGameObject(gameObject, "CancelBtn")
|
||
this.confirmBtn = Util.GetGameObject(gameObject, "ConfirmBtn")
|
||
this.itemImage = Util.GetGameObject(gameObject, "ConfirmBtn/itemImage"):GetComponent("Image")
|
||
this.itemImageText = Util.GetGameObject(gameObject, "ConfirmBtn/itemText"):GetComponent("Text")
|
||
--滚动条根节点
|
||
this.root = Util.GetGameObject(gameObject, "Root/Viewport/Content")
|
||
end
|
||
|
||
function this:BindEvent()
|
||
Util.AddClick(this.cancelBtn, function()
|
||
parent:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.confirmBtn, function()
|
||
local data
|
||
for k, v in pairs(selectHeroData) do
|
||
data = v.dynamicId
|
||
break
|
||
end
|
||
if itemNum < heroUseCount then
|
||
PopupTipPanel.ShowTip(string.format(Language[10320],
|
||
ConfigManager.GetConfigData(ConfigName.ItemConfig, heroUseItemId).Name))
|
||
return
|
||
end
|
||
NetManager.HeroRetureEvent(data, function(msg)
|
||
local oldPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
||
HeroManager.ResetHero(data)
|
||
PopupTipPanel.ShowTip(Language[12382])
|
||
parent:ClosePanel()
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function()
|
||
-- ResolvePanel.SwitchView(2,true,true)
|
||
local mainFormationHeroList = FormationManager.GetAllMainFormationHeroId()
|
||
if mainFormationHeroList[data] then
|
||
local newPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
||
if oldPowerNum ~= newPowerNum then
|
||
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,
|
||
{ oldValue = oldPowerNum, newValue = newPowerNum })
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Role.UpdateRoleInfoPanel)
|
||
end, 0, nil, nil, 1)
|
||
HeroPropManager.SetDirtyByType(data, Hero_Prop_Type.Base)
|
||
HeroPropManager.SetDirtyByType(data, Hero_Prop_Type.PassiveSkill)
|
||
end)
|
||
end)
|
||
end
|
||
|
||
function this:AddListener()
|
||
end
|
||
|
||
function this:RemoveListener()
|
||
end
|
||
|
||
function this:OnShow(_parent, ...)
|
||
parent = _parent
|
||
sortingOrder = _parent.sortingOrder
|
||
local args = { ... }
|
||
dropList = args[1]
|
||
selectHeroData = args[2]
|
||
local curhero
|
||
for k, v in pairs(selectHeroData) do
|
||
curhero = v
|
||
end
|
||
this.root.transform:GetComponent("RectTransform"):DOAnchorPosX(0, 0)
|
||
|
||
this.titleText.text = Language[12383]
|
||
--返还比
|
||
local num = tonumber(ConfigManager.GetConfigData(ConfigName.SpecialConfig, 34).Value) / 100
|
||
this.bodyText.text = string.format(Language[12384])
|
||
|
||
local _data = {}
|
||
for i = 1, #dropList do
|
||
_data[i] = { dropList[i].id, dropList[i].num, nil, dropList[i].star, curhero.dynamicId }
|
||
end
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
table.sort(_data, function(a, b)
|
||
if itemConfig[a[1]].ItemType == itemConfig[b[1]].ItemType then
|
||
return itemConfig[a[1]].Quantity > itemConfig[b[1]].Quantity
|
||
else
|
||
return itemConfig[a[1]].ItemType > itemConfig[b[1]].ItemType
|
||
end
|
||
end)
|
||
ResetItemView(this.root, this.root.transform, itemList, 8, 1, sortingOrder, false, _data)
|
||
|
||
|
||
--英雄消耗道具数量
|
||
heroUseCount = 0
|
||
heroUseItemId = 0
|
||
local pId = nil
|
||
local curHeroData = nil
|
||
for k, v in pairs(selectHeroData) do
|
||
curHeroData = v
|
||
break
|
||
end
|
||
if curHeroData == nil then return end
|
||
local heroRankupConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
|
||
if curHeroData.breakId == 0 then
|
||
pId = 0
|
||
else
|
||
pId = heroRankupConfig[curHeroData.breakId].Phase[2]
|
||
end
|
||
local heroReturnConfig = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.HeroReturn, "HeroId", curHeroData.id,
|
||
"Star", pId)
|
||
if not heroReturnConfig then
|
||
-- LogRed("HeroId"..curHeroData.id.." Star"..pId.." curHeroData.breakId"..curHeroData.breakId)
|
||
heroUseCount = 50
|
||
heroUseItemId = 16
|
||
else
|
||
heroUseCount = heroReturnConfig.ReturnConsume[1][2]
|
||
heroUseItemId = heroReturnConfig.ReturnConsume[1][1]
|
||
end
|
||
itemNum = BagManager.GetItemCountById(heroUseItemId)
|
||
-- LogBlue("heroUseItemId "..heroUseItemId.." itemNum "..itemNum.." heroUseCount "..heroUseCount)
|
||
if itemNum >= heroUseCount then
|
||
this.itemImageText.text = string.format("<color=#7B4822>×%s</color>", heroUseCount)
|
||
else
|
||
this.itemImageText.text = string.format("<color=#C66366FF>×%s</color>", heroUseCount)
|
||
end
|
||
this.itemImage.sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig[heroUseItemId].ResourceID))
|
||
end
|
||
|
||
function this:OnClose()
|
||
end
|
||
|
||
function this:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
end
|
||
|
||
return this
|