miduo_client/Assets/ManagedResources/~Lua/Modules/RoleInfo/RoleFlyUpLayout.lua

583 lines
29 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
RoleFlyUpLayout = Inherit(BasePanel)
local this = RoleFlyUpLayout
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local heroRankupConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local heroSkinConfig = ConfigManager.GetConfig(ConfigName.HeroSkin)
local isUpStarMaterials=true--升星 材料是否充足
local curSelectUpStarData--当前选择升星坑位的数据
local curSelectUpStarGo--当前选择升星坑位的预设
local upStarConsumeMaterial={}--升星消耗的英雄组 {{1坑位英雄信息}{2坑位英雄信息}{}}
local upStarMaterialIsAll={}--升星消耗的英雄组是否满足 {{1满足}{2不满足}{}}
local isHeroUpStar=false--是否可升星
local upStarRankUpConfig={}--即将要升星的数据
local curStarRankUpConfig={}--当前升星的数据
local curHeroData--当前英雄信息
local parent = {}
local upStarPreList = {}
local heroDatas = {}
local isUpZhen = false
local allAddProVal = {}
local allHeroTeamAddProVal = {}
function RoleFlyUpLayout:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = RoleFlyUpLayout })
return b
end
--初始化组件(用于子类重写)
function RoleFlyUpLayout:InitComponent()
this.spLoader = SpriteLoader.New()
this.upStar=Util.GetGameObject(self.gameObject,"upStar")
this.noUpStarText=Util.GetGameObject(self.gameObject,"noUpStarText")
this.upStarPre=Util.GetGameObject(this.upStar,"upStarPre")
this.upStarGrid=Util.GetGameObject(this.upStar,"grid")
this.upStarBtn=Util.GetGameObject(this.upStar,"btns/upStarBtn")
this.upStarBtnRedPoint=Util.GetGameObject(this.upStar,"btns/upStarBtn/redPoint")
this.goldBtn=Util.GetGameObject(this.upStar,"goldGrid/gold")
this.goldText=Util.GetGameObject(this.upStar,"goldGrid/gold/Text"):GetComponent("Text")
this.goldImage=Util.GetGameObject(this.upStar,"goldGrid/gold")
this.gold2Btn=Util.GetGameObject(this.upStar,"goldGrid/gold2")
this.gold2Text=Util.GetGameObject(this.upStar,"goldGrid/gold2/Text"):GetComponent("Text")
this.gold2Image=Util.GetGameObject(this.upStar,"goldGrid/gold2")
this.roleUpStarRedPoint=Util.GetGameObject(self.gameObject,"rolePanel/btnList/btnUpStar/redPoint")
--升星属性
this.skillInfoGrid = Util.GetGameObject(this.upStar.transform, "upStarProInfo/skillInfo"):GetComponent("Text")
this.atkPro_UpStar=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/pro/atk")
this.hpPro_UpStar=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/pro/hp")
this.phyDef_UpStar=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/pro/phyDef")
this.magDef_UpStar=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/pro/magDef")
this.flyImage=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/img"):GetComponent("Image")
this.flyTxt=Util.GetGameObject(self.gameObject,"upStar/upStarProInfo/Image/starInfo"):GetComponent("Text")
this.help=Util.GetGameObject(self.gameObject,"upStar/btns/help")
this.heroSource = Util.GetGameObject(self.gameObject,"upStar/btns/heroSource")
this.tip = Util.GetGameObject(self.gameObject,"upStar/tip"):GetComponent("Text")
end
--绑定事件用于子类重写s
function RoleFlyUpLayout:BindEvent()
Util.AddOnceClick(this.heroSource, function()
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout = true
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = true
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,curHeroData.heroConfig.Id)
end)
--升星
Util.AddOnceClick(this.upStarBtn, function()
self:StarUpClick()
end)
Util.AddClick(this.help, function()
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.JinJieYuLan,curHeroData,1)
end)
end
--添加事件监听(用于子类重写)
function RoleFlyUpLayout:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.UpdateHeroUpStarMaterialShow,self)
end
--移除事件监听(用于子类重写)
function RoleFlyUpLayout:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold,this.UpdateHeroUpStarMaterialShow,self)
end
function RoleFlyUpLayout:OnShow()
self.gameObject:SetActive(true)
if PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 then
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout = true
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = true
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,curHeroData.heroConfig.Id)
end
end
function RoleFlyUpLayout:SetData(_sortinglayer,_parent,_curHerodata,_isUpZhen,_heroDatas)
self.gameObject:SetActive(true)
this.sortingOrder = _sortinglayer
curHeroData = _curHerodata
if curHeroData.heroConfig.MaxRank > 5 then
this.help.gameObject:SetActive(true)
this.heroSource.gameObject:SetActive(true)
else
this.help.gameObject:SetActive(false)
this.heroSource.gameObject:SetActive(false)
end
parent = _parent
heroDatas = _heroDatas
isUpZhen = _isUpZhen
this:GetCurHeroUpLvOrUpStarSData()
this:UpdateHeroUpStarData()--进阶
if upStarRankUpConfig then
LogError("upStarRankUpConfig.id=="..upStarRankUpConfig.Id)
--LogGreen("AddLv:"..HarmonyManager.GetSingleAdditions(HarmonyAddType.AddLv).." LimitHongmengLevel:"..upStarRankUpConfig.LimitHongmengLevel)
if HarmonyManager.GetSingleAdditions(HarmonyAddType.AddLv) >= upStarRankUpConfig.LimitHongmengLevel then -- 鸿蒙阵神将共鸣等级
this.upStarBtn.gameObject:SetActive(true)
this.tip.gameObject:SetActive(false)
else
this.upStarBtn.gameObject:SetActive(false)
this.tip.gameObject:SetActive(true)
this.tip.text = "飞升需求鸿蒙阵等级:"..upStarRankUpConfig.LimitHongmengLevel
end
end
end
--更新英雄进阶数据
function RoleFlyUpLayout:UpdateHeroUpStarData()
--进阶材料
this:UpdateHeroUpStarMaterialShow()
local WarPower
--计算面板属性
if isUpZhen then
allAddProVal = HeroPropManager.GetHeroProp(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL)
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL)
else
allAddProVal = HeroPropManager.GetHeroProp(curHeroData.dynamicId)
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId)
end
--进阶属性提升
if upStarRankUpConfig and upStarRankUpConfig.Id then
this:UpdateHeroUpStarProUpShow()
end
-- local str=""
local flyStr=""
if curHeroData.star==10 then
--str="r_tongyong_tianfufeishengxiao1"
flyStr="飞升一阶"
elseif curHeroData.star==11 then
--str="r_tongyong_tianfufeishengxiao2"
flyStr="飞升二阶"
elseif curHeroData.star==12 then
-- str="r_tongyong_tianfufeishengxiao3"
flyStr="飞升三阶"
elseif curHeroData.star==13 then
-- str="r_tongyong_tianfufeishengxiao3"
flyStr="飞升四阶"
elseif curHeroData.star==14 then
-- str="r_tongyong_tianfufeishengxiao3"
flyStr="飞升五阶"
else
--="r_hero_tianfu2_zh"
end
--this.flyImage.sprite=this.spLoader:LoadSprite(str)
this.flyTxt.text=flyStr
local awaken=curHeroData.heroConfig.Awaken
local str="激活飞升天赋: "
if awaken then
for key, value in pairs(awaken) do
if value[2]==curHeroData.star+15 then
local aaa=ConfigManager.TryGetConfigData(ConfigName.PassiveSkillConfig,value[3])
if aaa then
--this.skillInfoGrid.text="激活飞升天赋:".." "..aaa.Desc
--break
str=str.."<color=FFFFFF>"..aaa.Desc.."</color>"
end
end
end
end
this.skillInfoGrid.text=str
--进阶吞英雄条件
Util.ClearChild(this.upStarGrid.transform)
local curUpStarData= HeroManager.GetHeroCurUpStarInfo(curHeroData.dynamicId)
if curUpStarData and #curUpStarData>0 then
this.upStar:SetActive(true)
this.noUpStarText:SetActive(false)
--parent.talentTipStrGo:SetActive(true)
upStarConsumeMaterial={}
upStarMaterialIsAll = {}
upStarPreList = {}
for i = 1, #curUpStarData do
local go=newObject(this.upStarPre)
go.transform:SetParent(this.upStarGrid.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition=Vector3.zero;
go:SetActive(true)
go.transform.name = "upStarPre"..i
upStarPreList[i] = go
upStarConsumeMaterial[i]={}
upStarMaterialIsAll[i]=2
local addBtn=Util.GetGameObject(go.transform,"add")
local isItem=false
Util.GetGameObject(go.transform, "iconbg/proImage"):SetActive(false)
local itemConfig=nil
local numTxt=Util.GetGameObject(go.transform,"num"):GetComponent("Text")
if curUpStarData[i].upStarMaterialsData.Issame==1 or curUpStarData[i].upStarMaterialsData.IsId>0 then
Util.GetGameObject(go.transform,"iconDefault"):SetActive(false)
Util.GetGameObject(go.transform,"icon"):SetActive(true)
-- Util.GetGameObject(go.transform, "iconbg/proImage"):SetActive(true)
-- Util.GetGameObject(go.transform, "iconbg/proImage"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.changeProId))
if curUpStarData[i].upStarMaterialsData.Issame==1 then
Util.GetGameObject(go.transform,"icon"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetResourcePath(curHeroData.heroConfig.Icon))
Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetHeroQuantityImageByquality(curHeroData.heroConfig.Quality, curUpStarData[i].upStarMaterialsData.StarLimit))
-- Util.GetGameObject(go.transform, "iconbg/proImage"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.changeProId))
elseif curUpStarData[i].upStarMaterialsData.IsId>0 then
local heroConfig = ConfigManager.TryGetConfigData(ConfigName.HeroConfig, curUpStarData[i].upStarMaterialsData.IsId)
if heroConfig then
Util.GetGameObject(go.transform,"icon"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetResourcePath(heroConfig.Icon))
Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroConfig.Quality, curUpStarData[i].upStarMaterialsData.StarLimit))
-- Util.GetGameObject(go.transform, "iconbg/proImage").gameObject:SetActive(true)
-- Util.GetGameObject(go.transform, "iconbg/proImage"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetProStrImageByProNum(heroConfig.PropertyName))
else
itemConfig=ConfigManager.TryGetConfigData(ConfigName.ItemConfig,curUpStarData[i].upStarMaterialsData.IsId)
if itemConfig then
isItem=true
Util.GetGameObject(go.transform,"icon"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig.ResourceID))
Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetHeroQuantityImageByquality(itemConfig.Quantity))
Util.GetGameObject(go.transform, "iconbg/proImage").gameObject:SetActive(false)
end
end
end
else
if curUpStarData[i].upStarMaterialsData.IsSameClan ==1 then
-- Util.GetGameObject(go.transform, "iconbg/proImage"):SetActive(true)
-- Util.GetGameObject(go.transform, "iconbg/proImage"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.changeProId))
end
Util.GetGameObject(go.transform,"iconDefault"):SetActive(true)
Util.GetGameObject(go.transform,"icon"):SetActive(false)
Util.GetGameObject(go.transform,"frame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetHeroQuantityImageByquality(nil,curUpStarData[i].upStarMaterialsData.StarLimit))
--
end
local upStarHeroListData=HeroManager.GetUpStarHeroListData(curUpStarData[i].upStarMaterialsData.Id,curHeroData)
local needNum=curUpStarData[i].upStarData[4]
if isItem then
local bagNum=BagManager.GetItemCountById(itemConfig.Id)
--upStarConsumeMaterial[i][1].type=RoleUpStarMatType.item
LogError("bagnum=="..bagNum.." neddnum=="..needNum)
if bagNum<needNum then
isUpStarMaterials=false
numTxt.text=string.format("<color=#FF0000FF>%s/%s</color>",bagNum,needNum)
else
upStarMaterialIsAll[i]=1
numTxt.text=string.format("<color=#FFFFFFFF>%s/%s</color>",bagNum,needNum)
for m = 1, needNum do
upStarConsumeMaterial[i][m]={type=RoleUpStarMatType.flyDan,id=tostring(itemConfig.Id)}
end
end
else
numTxt.text=string.format("<color=#FF0000FF>%s/%s</color>",0,needNum)
end
if upStarHeroListData.state>0 then
Util.GetGameObject(go.transform,"add/add"):SetActive(true)
else
Util.GetGameObject(go.transform,"add/add"):SetActive(false)
end
SetHeroStars(this.spLoader, Util.GetGameObject(go.transform, "iconbg/starGrid"), curUpStarData[i].upStarMaterialsData.StarLimit,1,nil,-15.3)
Util.SetParticleSortLayer(Util.GetGameObject(go.transform, "iconbg/starGrid"),self.sortingOrder + 1)
Util.AddOnceClick(addBtn, function()
if isItem then
LogError("点击的是物品")
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,itemConfig.Id)
else
curSelectUpStarData=curUpStarData[i]
curSelectUpStarGo=go
local curShowHeroListData=self:SetShowHeroListData(upStarConsumeMaterial,upStarHeroListData.heroList)
--参数1 显示的herolist 2 3 升当前星的规则 4 打开RoleUpStarListPanel的界面
UIManager.OpenPanel(UIName.RoleUpStarListPanel,curShowHeroListData,curUpStarData[i].upStarMaterialsData,curUpStarData[i].upStarData,this,upStarConsumeMaterial[i],curHeroData)
end
end)
end
else
this.upStar:SetActive(false)
this.noUpStarText:SetActive(true)
-- parent.talentTipStrGo:SetActive(false)
end
self:AutoSelectUpStarHeroList(curUpStarData)
end
--获取当前英雄的下一突破 和 升星 静态数据
function RoleFlyUpLayout:GetCurHeroUpLvOrUpStarSData()
isHeroUpStar = false
upStarRankUpConfig = {}
local heroRankUpConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
for i, v in ConfigPairs(heroRankUpConfig) do
if v.Star==curHeroData.heroConfig.Star then--初始星级相等
if v.Show==2 then -- 2 升星
if v.Id ~= curHeroData.upStarId and curHeroData.star == v.LimitStar then
--Log("升星 "..v.Id)
upStarRankUpConfig=v
isHeroUpStar = true
end
end
end
end
end
--更新英雄进阶材料显示
function RoleFlyUpLayout:UpdateHeroUpStarMaterialShow()
--进阶金币 妖壶条件
if upStarRankUpConfig then
isUpStarMaterials=true
local ConsumeMaterial=upStarRankUpConfig.ConsumeMaterial
if ConsumeMaterial and #ConsumeMaterial>=2 then
if ConsumeMaterial[1][2]>0 then
this.goldImage:SetActive(true)
this.goldImage:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig[ConsumeMaterial[1][1]].ResourceID))
if BagManager.GetItemCountById(ConsumeMaterial[1][1])<ConsumeMaterial[1][2] then
isUpStarMaterials=false
this.goldText.text=string.format("<color=#FF0000FF>%s</color>",ConsumeMaterial[1][2])
else
this.goldText.text=string.format("<color=#FFFFFFFF>%s</color>",ConsumeMaterial[1][2])
end
Util.AddOnceClick(this.goldBtn,function()
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,ConsumeMaterial[1][1])
end)
else
this.goldImage:SetActive(false)
end
if ConsumeMaterial[2][2]>0 then
this.gold2Image:SetActive(true)
this.gold2Image:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(itemConfig[ConsumeMaterial[2][1]].ResourceID))
if BagManager.GetItemCountById(ConsumeMaterial[2][1])<ConsumeMaterial[2][2] then
isUpStarMaterials=false
this.gold2Text.text=string.format("<color=#FF0000FF>%s</color>",ConsumeMaterial[2][2])
else
this.gold2Text.text=string.format("<color=#FFFFFFFF>%s</color>",ConsumeMaterial[2][2])
end
Util.AddOnceClick(this.gold2Btn,function()
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,ConsumeMaterial[2][1])
end)
else
this.gold2Image:SetActive(false)
end
end
end
end
--进阶属性提升
function RoleFlyUpLayout:UpdateHeroUpStarProUpShow()
if upStarRankUpConfig and upStarRankUpConfig.Id then
local nextUpStarConFig = ConfigManager.GetConfigData(ConfigName.HeroRankupConfig,upStarRankUpConfig.Id)
local nextProUpVal = 0
if nextUpStarConFig then nextProUpVal = nextUpStarConFig.PropertiesDisplay end
-- 生成一个临时英雄数据,使用完成后需主动清理
local tempDId, tempData = HeroTempPropManager.CreateTempHero(curHeroData.dynamicId)
LogError("upStarRankUpConfig.Id=="..upStarRankUpConfig.Id.." breakid=="..curHeroData.breakId)
tempData.upStarId = upStarRankUpConfig.Id
tempData.breakId = curHeroData.breakId
local nextallAddProVal = {}
if isUpZhen then
nextallAddProVal = HeroTempPropManager.GetTempHeroProp(tempDId, FormationTypeDef.FORMATION_NORMAL)
else
nextallAddProVal = HeroTempPropManager.GetTempHeroProp(tempDId)
end
HeroTempPropManager.ClearTempHero(tempDId)-- 清理
this:ProShow(this.atkPro_UpStar,allAddProVal,HeroProType.Attack,nextallAddProVal)
this:ProShow(this.hpPro_UpStar,allAddProVal,HeroProType.Hp,nextallAddProVal)
this:ProShow(this.phyDef_UpStar,allAddProVal,HeroProType.PhysicalDefence,nextallAddProVal)
this:ProShow(this.magDef_UpStar,allAddProVal,HeroProType.MagicDefence,nextallAddProVal)
end
end
function RoleFlyUpLayout:ProShow(go,allAddProVal,HeroProType,nextallAddProVal)
local curProSConFig = ConfigManager.GetConfigData(ConfigName.PropertyConfig,HeroProType)
Util.GetGameObject(go,"proName"):GetComponent("Text").text = GetLanguageStrById(curProSConFig.Info)..""
Util.GetGameObject(go,"proValue"):GetComponent("Text").text = allAddProVal[HeroProType]
Util.GetGameObject(go,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(PropertyTypeIconDef[HeroProType])
if nextallAddProVal then
Util.GetGameObject(go,"nextproValue"):GetComponent("Text").text = nextallAddProVal[HeroProType]
end
end
--升星选择祭品后刷新界面
function RoleFlyUpLayout:AutoSelectUpStarHeroList(_curUpStarData)
local curUpStarData= _curUpStarData
if curUpStarData and #curUpStarData>0 then
for i = 1, #curUpStarData do
curSelectUpStarData=curUpStarData[i]
curSelectUpStarGo=upStarPreList[i]
local upStarHeroListData=HeroManager.GetUpStarHeroListData(curUpStarData[i].upStarMaterialsData.Id,curHeroData)
local curSelectHeroList = {}
if curUpStarData[i].upStarMaterialsData.Issame ==1
or curUpStarData[i].upStarMaterialsData.IsId > 0
or (curUpStarData[i].upStarMaterialsData.IsSameClan == 1
and curUpStarData[i].upStarMaterialsData.StarLimit == 3
and curHeroData.heroConfig.Qualiy ~= 3) then
if LengthOfTable(upStarHeroListData.heroList) >= curUpStarData[i].upStarData[4] then
for i = 1, curUpStarData[i].upStarData[4] do
if upStarHeroListData.heroList[i].type == RoleUpStarMatType.item or upStarHeroListData.heroList[i].type == RoleUpStarMatType.hero and upStarHeroListData.heroList[i].lockState == 0 and upStarHeroListData.heroList[i].isFormation == ""
and (not HarmonyManager.IsChangeColor(upStarHeroListData.heroList[i].dynamicId)) and (not HarmonyManager:IsEnvoy(upStarHeroListData.heroList[i].dynamicId)) then
table.insert(curSelectHeroList,upStarHeroListData.heroList[i])
end
end
self:UpdateUpStarPosHeroData(curSelectHeroList)
end
end
end
end
--进阶红点
local upStarRedPointState = HeroManager.IsShowFlyUpRedPoint(curHeroData)
this.upStarBtnRedPoint:SetActive(upStarRedPointState)
parent:CheckRedPointType(RoleInfoPanelIndex.jinjie,upStarRedPointState)
end
--刷新当前升星坑位英雄的信息
function RoleFlyUpLayout:UpdateUpStarPosHeroData(curSelectHeroList)
if LengthOfTable(curSelectHeroList)<curSelectUpStarData.upStarData[4] then
upStarMaterialIsAll[curSelectUpStarData.upStarData[2]]=2
Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(true)
local upStarHeroListData=HeroManager.GetUpStarHeroListData(curSelectUpStarData.upStarMaterialsData.Id,curHeroData)
if upStarHeroListData.state<=0 then
Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(false)
end
Util.GetGameObject(curSelectUpStarGo.transform,"num"):GetComponent("Text").text=string.format("<color=#FF0000FF>%s/%s</color>", LengthOfTable(curSelectHeroList),curSelectUpStarData.upStarData[4])
else
upStarMaterialIsAll[curSelectUpStarData.upStarData[2]]=1
Util.GetGameObject(curSelectUpStarGo.transform,"add/add"):SetActive(false)
Util.GetGameObject(curSelectUpStarGo.transform,"num"):GetComponent("Text").text=string.format("<color=#FFFFFFFF>%s/%s</color>", LengthOfTable(curSelectHeroList),curSelectUpStarData.upStarData[4])
end
local curUpStarConsumeMaterial={}
for i, v in pairs(curSelectHeroList) do
table.insert(curUpStarConsumeMaterial,v)
end
upStarConsumeMaterial[curSelectUpStarData.upStarData[2]]=curUpStarConsumeMaterial
end
--分析设置升星界面显示的英雄list数据 如果当前升星材料的坑位的英雄数据与 以其他坑位有重合并且选择上的英雄不显示 如果是当前坑位显示的英雄显示对勾
function RoleFlyUpLayout:SetShowHeroListData(upStarConsumeMaterial,curHeroList)--1 消耗的总消耗组 2 当前坑位可选择的所有英雄
--Log("#curHeroList "..#curHeroList)
local curEndShowHeroListData2={}
for i = 1, #curHeroList do
table.insert(curEndShowHeroListData2,curHeroList[i])
end
local curEndShowHeroListData={}
for i, v in pairs(curEndShowHeroListData2) do
v.isSelect=2
table.insert(curEndShowHeroListData,v)
end
for j = 1, #upStarConsumeMaterial do
if upStarConsumeMaterial[j] and #upStarConsumeMaterial[j]>0 then
for k = 1, #upStarConsumeMaterial[j] do
if j==curSelectUpStarData.upStarData[2] then--curSelectUpStarData 当前坑位选择的英雄信息
for _, v in pairs(curEndShowHeroListData) do
if v.type == RoleUpStarMatType.hero and v.dynamicId==upStarConsumeMaterial[j][k].dynamicId then
v.isSelect=1
elseif v.type == RoleUpStarMatType.item and v.id==upStarConsumeMaterial[j][k].id and v.index==upStarConsumeMaterial[j][k].index then
v.isSelect=1
end
end
else
for i, v in pairs(curEndShowHeroListData) do
if v.type == RoleUpStarMatType.hero and v.dynamicId==upStarConsumeMaterial[j][k].dynamicId then
curEndShowHeroListData[i] = nil
elseif v.type == RoleUpStarMatType.item and v.id==upStarConsumeMaterial[j][k].id and v.index==upStarConsumeMaterial[j][k].index then
curEndShowHeroListData[i] = nil
end
end
end
end
end
end
local curList={}
for _, v in pairs(curEndShowHeroListData) do
table.insert(curList,v)
end
return curList
end
--进阶按钮点击事件处理
function RoleFlyUpLayout:StarUpClick()
if (not HarmonyManager.IsInfo(curHeroData.dynamicId)) and (not HarmonyManager:IsEnvoy(curHeroData.dynamicId)) then
if curHeroData.oriLv>=HeroManager.heroLvEnd[curHeroData.heroConfig.Id] and curHeroData.star==curHeroData.heroConfig.MaxStar then
PopupTipPanel.ShowTip(Language[11788])
return
end
end
if curHeroData.lv<upStarRankUpConfig.LimitLevel then
PopupTipPanel.ShowTip(Language[11789]..upStarRankUpConfig.LimitLevel)
return
end
local isUpStarMaterialsHero=true
for i = 1, #upStarMaterialIsAll do
if upStarMaterialIsAll[i]==2 then
isUpStarMaterialsHero=false
end
end
if isUpStarMaterials and isUpStarMaterialsHero then
NetManager.HeroUpStarEvent(curHeroData.dynamicId,upStarConsumeMaterial ,function (msg)
UIManager.OpenPanel(UIName.RoleFlyUpSuccessPanel,curHeroData,upStarRankUpConfig.Id,upStarRankUpConfig.OpenLevel,function ()
local dropItemTabs = BagManager.GetTableByBackDropData(msg)
if #dropItemTabs > 0 then
BagManager.SetDropIsSHowEquipPrint(false)
UIManager.OpenPanel(UIName.RewardItemPopup, msg, 1, function ()
self:DeleteUpStarMaterials()
end)
else
self:DeleteUpStarMaterials()
end
CheckRedPointStatus(RedPointType.ShengXingYouLi)
end)
end)
-- 进阶音效
PlaySoundWithoutClick(SoundConfig.Sound_Recruit3)
else
PopupTipPanel.ShowTip("材料不足无法飞升")
end
end
--扣除升星 消耗的材料 更新英雄数据
function RoleFlyUpLayout:DeleteUpStarMaterials()
HeroManager.UpdateSingleHeroDatas(curHeroData.dynamicId,nil,curHeroData.star+1,nil,upStarRankUpConfig.Id,true)
HeroManager.UpdateSingleHeroSkillData(curHeroData.dynamicId)
for i, v in pairs(heroDatas) do
if curHeroData == v then
curHeroData=HeroManager.GetSingleHeroData(curHeroData.dynamicId)
v=curHeroData
end
end
--本地数据删除材料英雄
local curDelHeroDids = {}
for i = 1, #upStarConsumeMaterial do
for j = 1, #upStarConsumeMaterial[i] do
if upStarConsumeMaterial[i][j].type == RoleUpStarMatType.hero then
table.insert(curDelHeroDids,upStarConsumeMaterial[i][j].dynamicId)
end
end
end
if curDelHeroDids and #curDelHeroDids > 0 then
HeroManager.DeleteHeroDatas(curDelHeroDids)
end
if HeroManager.heroListPanelProID ~= ProIdConst.All then
heroDatas = HeroManager.GetHeroDataByProperty(HeroManager.heroListPanelProID)
else
heroDatas = HeroManager.GetAllHeroDatas()
end
if UIManager.IsOpen(UIName.RoleInfoPanel) then--当界面存在时需要刷新当前界面
HeroManager.SortHeroDatas(heroDatas)
parent:OnOpen(curHeroData, heroDatas,isUpZhen)
parent:OnShow()
end
end
function RoleFlyUpLayout:OnSortingOrderChange()
end
function RoleFlyUpLayout:OnHide()
self.gameObject:SetActive(false)
end
function RoleFlyUpLayout:OnClose()
upStarPreList = {}
end
function RoleFlyUpLayout:OnDestroy()
this.spLoader:Destroy()
upStarPreList = {}
end
return this