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..""..aaa.Desc..""
                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%s/%s",bagNum,needNum)
                else
                    upStarMaterialIsAll[i]=1
                    numTxt.text=string.format("%s/%s",bagNum,needNum)
                    for m = 1, needNum do
                        upStarConsumeMaterial[i][m]={type=RoleUpStarMatType.flyDan,id=tostring(itemConfig.Id)}
                    end
                end
            else
               numTxt.text=string.format("%s/%s",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])%s",ConsumeMaterial[1][2])
                else
                    this.goldText.text=string.format("%s",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])%s",ConsumeMaterial[2][2])
                else
                    this.gold2Text.text=string.format("%s",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)%s/%s", 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("%s/%s", 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 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