611 lines
30 KiB
Lua
611 lines
30 KiB
Lua
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/Text"):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 = Language[12720] .. 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 = Language[12721]
|
||
elseif curHeroData.star == 11 then
|
||
str = "r_tongyong_tianfufeishengxiao2"
|
||
flyStr = Language[12722]
|
||
elseif curHeroData.star == 12 then
|
||
str = "r_tongyong_tianfufeishengxiao3"
|
||
flyStr = Language[12723]
|
||
elseif curHeroData.star == 13 then
|
||
str = "r_tongyong_tianfufeishengxiao3"
|
||
flyStr = Language[12724]
|
||
elseif curHeroData.star == 14 then
|
||
str = "r_tongyong_tianfufeishengxiao3"
|
||
flyStr = Language[12725]
|
||
else
|
||
str = "r_hero_tianfu2_zh"
|
||
end
|
||
this.flyImage.sprite = this.spLoader:LoadSprite(str)
|
||
this.flyTxt.text = flyStr
|
||
local awaken = curHeroData.heroConfig.Awaken
|
||
local str = Language[12726]
|
||
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 .. GetLanguageStrById(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 < 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[12697])
|
||
return
|
||
end
|
||
end
|
||
|
||
if curHeroData.lv < upStarRankUpConfig.LimitLevel then
|
||
PopupTipPanel.ShowTip(Language[12698] .. 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(Language[12727])
|
||
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
|