3344 lines
142 KiB
Lua
3344 lines
142 KiB
Lua
require("Base/BasePanel")
|
||
RoleInfoPanel = Inherit(BasePanel)
|
||
local this = RoleInfoPanel
|
||
|
||
--升级升星
|
||
local curHeroData --当前英雄信息
|
||
local leftHeroData --左边预加载英雄信息
|
||
local rightHeroData --右边预加载英雄信息
|
||
local heroDatas --所有英雄list信息
|
||
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
|
||
local heroRankupConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
|
||
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
||
local artResourcesConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
|
||
local SpecialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
|
||
|
||
--装备
|
||
local equipConfig = ConfigManager.GetConfig(ConfigName.EquipConfig)
|
||
local SkillLogicConfig = ConfigManager.GetConfig(ConfigName.SkillLogicConfig)
|
||
local PassiveSkillLogicConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillLogicConfig)
|
||
local WarWaySkillConfig = ConfigManager.GetConfig(ConfigName.WarWaySkillConfig)
|
||
local WarWaySkillUpgradeCost = ConfigManager.GetAllConfigsDataByKey(ConfigName.WarWaySkillConfig, "Level", 1)
|
||
local SpecialConfig = ConfigManager.GetConfig(ConfigName.SpecialConfig)
|
||
|
||
local index --当前英雄在 英雄列表中的索引
|
||
local costItemList --升级突破静态材料
|
||
local isUpLvMaterials = true --升级 进阶 材料是否充足
|
||
local isUpStarMaterials = true --升星 材料是否充足
|
||
local curSelectUpStarData --当前选择升星坑位的数据
|
||
local curSelectUpStarGo --当前选择升星坑位的预设
|
||
local upStarConsumeMaterial = {} --升星消耗的英雄组 {{1坑位英雄信息}{2坑位英雄信息}{}}
|
||
local upStarMaterialIsAll = {} --升星消耗的英雄组是否满足 {{1满足}{2不满足}{}}
|
||
local allAddProVal = {} --所有属性加成值
|
||
local lvUpShowProList = {} --升级后展示的属性提升list
|
||
local skillShowProList = {} --技能数据
|
||
local isHeroUpTuPo = false --是否可进阶
|
||
local isHeroUpStar = false --是否可升星
|
||
local upTuPoRankUpConfig = {} --即将要突破的数据
|
||
local upStarRankUpConfig = {} --即将要升星的数据
|
||
local curTuPoRankUpConfig = {} --当前突破的数据
|
||
local curStarRankUpConfig = {} --当前升星的数据
|
||
local upStarPreList = {}
|
||
|
||
--长按升级状态
|
||
local _isClicked = false --是否点击
|
||
local _isReqLvUp = false
|
||
local _isLongPress = false --是否长按
|
||
RoleInfoPanel.timePressStarted = 0 --监听长按事件
|
||
this.priThread = nil --协同程序播放升级属性提升值动画用
|
||
local isGoToBattle = false --当前英雄是否上阵
|
||
local isClickLeftOrRightBtn = true --点击左右按钮切换英雄播放动画状态
|
||
local teamHero = {} --主线编队成员信息
|
||
local isTriggerLongClick = false --长按是否升过级
|
||
this.AddLv = 1 --升级级数
|
||
this.isCanAdvanced = true --是否进阶
|
||
local oldLv = 0
|
||
-- local GoToBattleNum = 0 --上阵数量
|
||
local liveDeviation --立绘偏移
|
||
-- local breakLevelOne = {
|
||
-- [0] = 30,
|
||
-- [1] = 40,
|
||
-- [2] = 50,
|
||
-- [3] = 60,
|
||
-- [4] = 80,
|
||
-- [5] = 100,
|
||
-- }
|
||
-- local StarLevelOne={
|
||
-- [5] = 100,
|
||
-- [6] = 145,
|
||
-- [7] = 165,
|
||
-- [8] = 185,
|
||
-- [9] = 205,
|
||
-- [10] = 255,
|
||
-- [11] = 280,
|
||
-- [12] = 310,
|
||
-- [13] = 340,
|
||
-- }
|
||
|
||
-- this.isStaticLive = false --是否是静态图
|
||
--装备
|
||
local effectList = {}
|
||
--当前英雄穿的装备
|
||
local curHeroEquipDatas = {}
|
||
local curEquipTreasureDatas = {}
|
||
local curPlanDatas = {}
|
||
local totemItem = {}
|
||
local orginLayer1
|
||
local curSelectEquipData
|
||
local curSelectTalentIdx = 1
|
||
local HeroLevelConfig = ConfigManager.GetAllConfigsData(ConfigName.HeroLevelConfig)
|
||
local HeroMaxLevel = HeroLevelConfig[#HeroLevelConfig].Level --340 --英雄最大等级
|
||
--装备类型
|
||
local equipType = {
|
||
[1] = GetLanguageStrById(22623),
|
||
[2] = GetLanguageStrById(22624),
|
||
[3] = GetLanguageStrById(22625),
|
||
[4] = GetLanguageStrById(22626)
|
||
}
|
||
--锁定按钮
|
||
local LockingBtnState = {
|
||
[1] = {
|
||
txt = string.format("<color=#FFFFFF>%s</color>", GetLanguageStrById(50164)),
|
||
img = Util.LoadSprite("X1_pinglun_suoding")
|
||
},
|
||
[2] = {
|
||
txt = string.format("<color=#A8A8A8>%s</color>", GetLanguageStrById(50165)),
|
||
img = Util.LoadSprite("X1_pinglun_yisuoding")
|
||
}
|
||
}
|
||
|
||
--铸神等级图片
|
||
local SpriteName = "X1_zhushen_dengji_0"
|
||
|
||
--英雄的两个能力是否可以领悟学习升级
|
||
local abilityCanShowRedPointState = {
|
||
["ability1"] = false,
|
||
["ability2"] = false
|
||
}
|
||
local isLink = false
|
||
|
||
--初始化组件(用于子类重写)
|
||
function RoleInfoPanel:InitComponent()
|
||
this.HeadFrameView = SubUIManager.Open(SubUIConfig.PlayerHeadFrameView, self.transform)
|
||
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform,
|
||
{ showType = UpViewOpenType.ShowRight })
|
||
|
||
this.leftBtn = Util.GetGameObject(self.transform, "leftBtn")
|
||
this.rightBtn = Util.GetGameObject(self.transform, "rightBtn")
|
||
this.curObj = Util.GetGameObject(self.transform, "curObj")
|
||
this.leftObj = Util.GetGameObject(self.transform, "leftObj")
|
||
this.rightObj = Util.GetGameObject(self.transform, "rightObj")
|
||
-- self.live2dRoot = Util.GetGameObject(self.gameObject, "live2dRoot")
|
||
this.BtnBack = Util.GetGameObject(self.transform, "rolePanel/btnBack")
|
||
|
||
this.isFirstOpen = true --是否首次打开
|
||
|
||
this.layout = Util.GetGameObject(self.transform, "rolePanel/layout")
|
||
|
||
--页签按钮
|
||
this.btnList = Util.GetGameObject(this.transform, "rolePanel/btnList")
|
||
this.btnInfo = Util.GetGameObject(this.btnList, "btnInfo") --属性
|
||
this.btnInfoRedPoint = Util.GetGameObject(this.btnInfo, "redPoint") --属性红点
|
||
this.btnEquip = Util.GetGameObject(this.btnList, "btnEquip") --装备
|
||
this.btnEquipRedPoint = Util.GetGameObject(this.btnEquip, "redPoint") --装备红点
|
||
this.btnCulture = Util.GetGameObject(this.btnList, "btnCulture") --培养
|
||
this.btnCultureRedPoint = Util.GetGameObject(this.btnCulture, "redPoint") --培养红点
|
||
|
||
this.btnCultureBtnList = Util.GetGameObject(this.layout, "LeftBtn")
|
||
this.btnUpStar = Util.GetGameObject(this.btnCultureBtnList, "btnList/btnUpStar") --升星
|
||
this.btnUpStarRedpoint = Util.GetGameObject(this.btnUpStar, "redPoint") --升星红点
|
||
this.btnAbility = Util.GetGameObject(this.btnCultureBtnList, "btnList/btnAbility") --能力
|
||
this.btnAbilityRedPoint = Util.GetGameObject(this.btnAbility, "redPoint") --能力红点
|
||
this.btnChip = Util.GetGameObject(this.btnCultureBtnList, "btnList/btnChip") --芯片
|
||
this.btnChipRedPoint = Util.GetGameObject(this.btnChip, "redPoint") --芯片红点
|
||
-- this.btnOverclock = Util.GetGameObject(this.btnCultureBtnList, "btnList/btnOverclock") --超频
|
||
-- this.btnFlagArr = Util.GetGameObject(this.btnCultureBtnList, "btnList/btnFlagArr") --旗阵
|
||
this.btnSelect = Util.GetGameObject(this.btnCultureBtnList, "btnList/selectBtn") --选择按钮
|
||
|
||
--英雄详情结构对象
|
||
this.roleInfoLayout = Util.GetGameObject(this.layout, "roleInfoLayout")
|
||
this.roleEquipLayout = Util.GetGameObject(this.layout, "roleEquipLayout")
|
||
this.roleUpStarLayout = Util.GetGameObject(this.layout, "roleUpStarLayout")
|
||
this.roleAbilityLayout = Util.GetGameObject(this.layout, "roleAbilityLayout")
|
||
this.roleChipLayout = Util.GetGameObject(this.layout, "roleChipLayout")
|
||
|
||
--礼物
|
||
this.giftBtn=Util.GetGameObject(self.transform,"roleInfoLayout/giftBtn")
|
||
|
||
--属性
|
||
this.info = Util.GetGameObject(self.transform, "rolePanel/info")
|
||
this.starGrid = Util.GetGameObject(this.info, "starGrid")
|
||
-- this.name = Util.GetGameObject(this.info, "name")
|
||
this.proImage = Util.GetGameObject(this.info, "name/proImage"):GetComponent("Image")
|
||
this.heroName = Util.GetGameObject(this.info, "name/heroName"):GetComponent("Text")
|
||
this.power = Util.GetGameObject(this.info, "powerBg/powerBtn/value"):GetComponent("Text")
|
||
|
||
this.core = Util.GetGameObject(this.roleInfoLayout, "core") --核心
|
||
|
||
this.posText = Util.GetGameObject(this.roleInfoLayout, "Info/Text"):GetComponent("Text") --定位
|
||
this.pro = Util.GetGameObject(this.roleInfoLayout, "Info/pro")
|
||
this.atkPro = Util.GetGameObject(this.pro, "atk")
|
||
this.hpPro = Util.GetGameObject(this.pro, "hp")
|
||
this.phyDef = Util.GetGameObject(this.pro, "phyDef")
|
||
this.Speed = Util.GetGameObject(this.pro, "Speed")
|
||
this.profession = Util.GetGameObject(this.pro, "lv/profession")
|
||
this.lv = Util.GetGameObject(this.pro, "lv/proValue"):GetComponent("Text")
|
||
this.maxLv = Util.GetGameObject(this.pro, "lv/proValueMax"):GetComponent("Text")
|
||
|
||
this.proHelpBtn = Util.GetGameObject(this.roleInfoLayout, "Info/helpBtn")
|
||
|
||
this.skillGrid = Util.GetGameObject(this.roleInfoLayout, "skill")
|
||
for i = 1, 4 do
|
||
skillShowProList[i] = Util.GetGameObject(this.skillGrid, "skillGroup/Skill" .. i)
|
||
end
|
||
|
||
--升级
|
||
this.itemPre = Util.GetGameObject(this.roleInfoLayout, "upLv/itemPre")
|
||
this.itemGrid = Util.GetGameObject(this.roleInfoLayout, "upLv/itemGrid")
|
||
this.upLvBtn = Util.GetGameObject(this.roleInfoLayout, "upLvBtn")
|
||
this.upLvTrigger = Util.GetEventTriggerListener(this.upLvBtn)
|
||
this.upClassBtn = Util.GetGameObject(this.roleInfoLayout, "upClassBtn")
|
||
this.maxLvTip = Util.GetGameObject(this.roleInfoLayout, "maxLv")
|
||
|
||
this.upLv = Util.GetGameObject(this.roleInfoLayout, "upLv")
|
||
this.upLvGoldBtn = Util.GetGameObject(this.upLv, "gold")
|
||
this.upLvGoldText = Util.GetGameObject(this.upLv, "gold/Text"):GetComponent("Text")
|
||
|
||
--升星
|
||
this.upStar = Util.GetGameObject(this.roleUpStarLayout, "upStar")
|
||
this.maxStar = Util.GetGameObject(this.roleUpStarLayout, "max")
|
||
this.upStarGrid = Util.GetGameObject(this.upStar, "upStarGrid")
|
||
this.upStarBtn = Util.GetGameObject(this.upStar, "upStarBtn")
|
||
-- this.upStarHelpBtn = Util.GetGameObject(this.roleUpStarLayout,"helpBtn")
|
||
|
||
this.goldGrid = Util.GetGameObject(this.upStar, "goldGrid")
|
||
this.goldBtn = Util.GetGameObject(this.goldGrid, "gold")
|
||
this.goldText = Util.GetGameObject(this.goldGrid, "gold/Text"):GetComponent("Text")
|
||
this.goldImage = Util.GetGameObject(this.goldGrid, "gold")
|
||
this.gold2Btn = Util.GetGameObject(this.goldGrid, "gold2")
|
||
this.gold2Text = Util.GetGameObject(this.goldGrid, "gold2/Text"):GetComponent("Text")
|
||
this.gold2Image = Util.GetGameObject(this.goldGrid, "gold2")
|
||
|
||
--升星属性
|
||
this.nextStarGrid = Util.GetGameObject(this.upStar, "nextStarGrid")
|
||
this.upInfoPro = Util.GetGameObject(this.upStar, "upInfoPro")
|
||
|
||
this.skill = Util.GetGameObject(this.upStar, "skill")
|
||
this.skillFream = Util.GetGameObject(this.skill, "fream"):GetComponent("Image")
|
||
this.skillIcon = Util.GetGameObject(this.skill, "icon"):GetComponent("Image")
|
||
this.skillImage = Util.GetGameObject(this.skill, "skillImage")
|
||
this.skillLv = Util.GetGameObject(this.skill, "skillImage/skillLv"):GetComponent("Text")
|
||
|
||
self.dragView = SubUIManager.Open(SubUIConfig.DragView, self.gameObject.transform)
|
||
self.dragView.transform:SetSiblingIndex(4)
|
||
this.trigger = Util.GetEventTriggerListener(self.dragView.gameObject)
|
||
this.trigger.onBeginDrag = this.trigger.onBeginDrag + this.OnBeginDrag
|
||
this.trigger.onDrag = this.trigger.onDrag + this.OnDrag
|
||
this.trigger.onEndDrag = this.trigger.onEndDrag + this.OnEndDrag
|
||
|
||
--装备
|
||
this.castGodBtn = Util.GetGameObject(this.roleEquipLayout, "castGodBtn") --铸神
|
||
this.EquipAll = Util.GetGameObject(this.roleEquipLayout, "EquipAll") --快速装备
|
||
this.EquipAllRedPoint = Util.GetGameObject(this.EquipAll, "redPoint")
|
||
|
||
this.equipInfo = Util.GetGameObject(this.roleEquipLayout, "equipInfo")
|
||
for i = 1, 8 do
|
||
effectList[i] = Util.GetGameObject(this.equipInfo, "equip" .. i .. "/effect")
|
||
end
|
||
|
||
for i = 1, 4 do
|
||
Util.GetGameObject(this.equipInfo, "equip" .. i .. "/text"):GetComponent("Text").text = equipType[i]
|
||
end
|
||
this.equipRedPoint = {} --装备红点
|
||
for i = 1, 8 do
|
||
this.equipRedPoint[i] = Util.GetGameObject(this.equipInfo, "equip" .. i .. "/redPoint")
|
||
end
|
||
|
||
this.ResetBtn = Util.GetGameObject(self.transform, "roleInfoLayout/ResetBtn") --重置
|
||
this.LockingBtn = Util.GetGameObject(self.transform, "roleInfoLayout/LockingBtn") --锁定
|
||
this.lockTxt = Util.GetGameObject(self.transform, "roleInfoLayout/LockingBtn/Text"):GetComponent("Text")
|
||
this.CommentBtn = Util.GetGameObject(self.transform, "roleInfoLayout/CommentBtn") --评论
|
||
|
||
--能力
|
||
this.preViewBtn = Util.GetGameObject(this.roleAbilityLayout, "preViewBtn")
|
||
this.shopAbilityBtn = Util.GetGameObject(this.roleAbilityLayout, "shopBtn")
|
||
this.abilityHelpBtn = Util.GetGameObject(this.roleAbilityLayout, "helpBtn")
|
||
this.abilityItemGrid = Util.GetGameObject(this.roleAbilityLayout, "ItemGrid")
|
||
this.totemlock = Util.GetGameObject(self.transform, "EquipmentPart/equipInfo/equip7/lock")
|
||
|
||
--芯片
|
||
this.atlasChipBtn = Util.GetGameObject(this.roleChipLayout, "btnList/atlasBtn")
|
||
this.manageChipBtn = Util.GetGameObject(this.roleChipLayout, "btnList/manageBtn")
|
||
this.gainChipBtn = Util.GetGameObject(this.roleChipLayout, "btnList/gainBtn")
|
||
this.shopChipBtn = Util.GetGameObject(this.roleChipLayout, "btnList/shopBtn")
|
||
this.chipList = {}
|
||
this.chipRedpointList = {} --芯片红点
|
||
this.chipGroups = Util.GetGameObject(this.roleChipLayout, "chipGrid")
|
||
for i = 1, 4 do
|
||
local chipItem = Util.GetGameObject(this.chipGroups, "chip" .. i)
|
||
this.chipList[i] = chipItem
|
||
this.chipRedpointList[i] = Util.GetGameObject(chipItem, "noChip/redpoint")
|
||
end
|
||
this.suit1 = Util.GetGameObject(this.roleChipLayout, "suit1")
|
||
this.suit2 = Util.GetGameObject(this.roleChipLayout, "suit2")
|
||
this.noSuit = Util.GetGameObject(this.roleChipLayout, "noSuit")
|
||
|
||
this.equipLinkTip = Util.GetGameObject(this.roleEquipLayout, "link")
|
||
this.infoLinkTip = Util.GetGameObject(this.roleInfoLayout, "link")
|
||
|
||
this.upStarLimit = Util.GetGameObject(this.upStarBtn, "limit")
|
||
this.upStarLimitTxt = Util.GetGameObject(this.upStarBtn, "limit/Text"):GetComponent("Text")
|
||
end
|
||
|
||
local btnType = {
|
||
Info = 1,
|
||
Equip = 2,
|
||
Culture = 3,
|
||
UpStar = 4,
|
||
Ability = 5,
|
||
Chip = 6,
|
||
Overclock = 7,
|
||
FlagArr = 8,
|
||
}
|
||
|
||
--绑定事件(用于子类重写)
|
||
function RoleInfoPanel:BindEvent()
|
||
Util.AddClick(this.castGodBtn, function()
|
||
if isLink then
|
||
return
|
||
end
|
||
UIManager.OpenPanel(UIName.PartsMainPopup, curHeroData, self)
|
||
end)
|
||
Util.AddClick(this.BtnBack, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.ResetBtn, function()
|
||
if curHeroData.lv == 1 then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(12505))
|
||
return
|
||
end
|
||
|
||
if isGoToBattle then
|
||
-- if GoToBattleNum < 2 then
|
||
local teamId = HeroManager.GetFormationByHeroId(curHeroData.dynamicId)
|
||
local team = FormationManager.GetFormationByID(teamId).teamHeroInfos
|
||
if #team < 2 then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(23163))
|
||
return
|
||
end
|
||
-- end
|
||
-- PopupTipPanel.ShowTipByLanguageId(11854)
|
||
-- return
|
||
end
|
||
if curHeroData.lockState == 1 then
|
||
PopupTipPanel.ShowTipByLanguageId(11855)
|
||
return
|
||
end
|
||
|
||
this.selectHeroData = {}
|
||
this.selectHeroData[curHeroData.dynamicId] = curHeroData
|
||
this.costItemId = 16
|
||
|
||
--回溯星级需要的材料ID selectHeroData选中的当前数据
|
||
if tonumber(LengthOfTable(curHeroData)) == 0 then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11792))
|
||
else
|
||
-- if BagManager.GetItemCountById(this.costItemId) == 0 then
|
||
-- UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, this.costItemId)
|
||
-- return
|
||
-- end
|
||
-- local teamId = HeroManager.GetFormationByHeroId(curHeroData.dynamicId)
|
||
local dropList, cost = HeroManager.GetHeroReturnItems(this.selectHeroData, GENERAL_POPUP_TYPE.ResolveRecall)
|
||
UIManager.OpenPanel(UIName.GeneralPopup, GENERAL_POPUP_TYPE.ResolveRecall, dropList, this.selectHeroData,
|
||
cost, function()
|
||
if isGoToBattle then
|
||
HeroManager.CompareWarPower(curHeroData.dynamicId) --对比战力并更新战力值 播放战力变更动画
|
||
end
|
||
this:UpdatePanelData()
|
||
end)
|
||
end
|
||
end)
|
||
|
||
Util.AddClick(this.LockingBtn, function()
|
||
if curHeroData.lockState == 1 then
|
||
curHeroData.lockState = 0
|
||
elseif curHeroData.lockState == 0 then
|
||
curHeroData.lockState = 1
|
||
end
|
||
NetManager.HeroLockEvent(curHeroData.dynamicId, curHeroData.lockState, function()
|
||
if curHeroData.lockState == 1 then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11853))
|
||
elseif curHeroData.lockState == 0 then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11791))
|
||
end
|
||
HeroManager.UpdateSingleHeroLockState(curHeroData.dynamicId, curHeroData.lockState)
|
||
|
||
this.lockTxt.text = LockingBtnState[curHeroData.lockState + 1].txt
|
||
this.LockingBtn:GetComponent("Image").sprite = LockingBtnState[curHeroData.lockState + 1].img
|
||
|
||
for i, v in pairs(heroDatas) do
|
||
if curHeroData == v then
|
||
v.lockState = curHeroData.lockState
|
||
end
|
||
end
|
||
end)
|
||
end)
|
||
Util.AddClick(this.CommentBtn, function()
|
||
UIManager.OpenPanel(UIName.CommentPanel, curHeroData.heroConfig)
|
||
end)
|
||
|
||
--左切换按钮
|
||
Util.AddClick(this.leftBtn, function()
|
||
this:LeftBtnOnClick()
|
||
-- this:UpdatePanelData()
|
||
end)
|
||
--右切换按钮
|
||
Util.AddClick(this.rightBtn, function()
|
||
this:RightBtnOnClick()
|
||
-- this:UpdatePanelData()
|
||
end)
|
||
|
||
Util.AddClick(this.dragView.gameObject, function()
|
||
end)
|
||
|
||
Util.AddClick(this.proHelpBtn, function()
|
||
UIManager.OpenPanel(UIName.RoleProInfoPopup, allAddProVal, curHeroData.heroConfig, true)
|
||
end)
|
||
|
||
--角色定位按钮
|
||
Util.AddClick(this.posBtn, function()
|
||
UIManager.OpenPanel(UIName.RolePosInfoPopup, curHeroData.heroConfig)
|
||
end)
|
||
|
||
--属性
|
||
Util.AddClick(this.btnInfo, function()
|
||
this.OnClick(btnType.Info)
|
||
end)
|
||
--装备
|
||
Util.AddClick(this.btnEquip, function()
|
||
this.OnClick(btnType.Equip)
|
||
end)
|
||
--培养
|
||
Util.AddClick(this.btnCulture, function()
|
||
this.OnClick(btnType.Culture)
|
||
end)
|
||
--升星
|
||
Util.AddClick(this.btnUpStar, function()
|
||
this.OnClick(btnType.UpStar)
|
||
end)
|
||
--能力
|
||
Util.AddClick(this.btnAbility, function()
|
||
this.OnClick(btnType.Ability)
|
||
end)
|
||
--礼物
|
||
Util.AddClick(this.giftBtn, function()
|
||
UIManager.OpenPanel(UIName.RoleGiftPanel,curHeroData,heroDatas)
|
||
end)
|
||
--芯片
|
||
Util.AddClick(this.btnChip, function()
|
||
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.MEDAL) then
|
||
this.OnClick(btnType.Chip)
|
||
else
|
||
PopupTipPanel.ShowTip(ActTimeCtrlManager.GetFuncTip(FUNCTION_OPEN_TYPE.MEDAL))
|
||
end
|
||
end)
|
||
--超频
|
||
Util.AddClick(this.btnOverclock, function()
|
||
this.OnClick(btnType.Overclock)
|
||
end)
|
||
--旗阵
|
||
Util.AddClick(this.btnFlagArr, function()
|
||
this.OnClick(btnType.FlagArr)
|
||
end)
|
||
--升级
|
||
Util.AddClick(this.upLvBtn, function()
|
||
if UIManager.IsOpen(UIName.RoleRankUpConfirmPopup) then
|
||
return
|
||
end
|
||
self:LvUpClick(true)
|
||
this.isCanAdvanced = true
|
||
end)
|
||
|
||
--进阶
|
||
Util.AddClick(this.upClassBtn, function()
|
||
if UIManager.IsOpen(UIName.RoleRankUpConfirmPopup) then
|
||
return
|
||
end
|
||
self:LvUpClick(true)
|
||
this.isCanAdvanced = true
|
||
end)
|
||
|
||
-- Util.AddClick(this.up1LvBtn, function()
|
||
-- --长按升级按下状态
|
||
-- this._onPointerDown = function(Pointgo, data)
|
||
-- isTriggerLongClick = false
|
||
-- _isClicked = true
|
||
-- RoleInfoPanel.timePressStarted = Time.realtimeSinceStartup
|
||
-- oldLv = curHeroData.lv
|
||
-- end
|
||
-- -- 长按升级抬起状态
|
||
-- this._onPointerUp = function(Pointgo, data)
|
||
-- if _isLongPress and isTriggerLongClick then
|
||
-- --连续升级抬起请求升级
|
||
-- self:LongLvUpClick(oldLv)
|
||
-- end
|
||
-- _isClicked = false
|
||
-- _isLongPress = false
|
||
-- end
|
||
-- this.upLvTrigger.onPointerDown = this.upLvTrigger.onPointerDown + this._onPointerDown
|
||
-- this.upLvTrigger.onPointerUp = this.upLvTrigger.onPointerUp + this._onPointerUp
|
||
|
||
--升星
|
||
Util.AddClick(this.upStarBtn, function()
|
||
if PlayerManager.level < upStarRankUpConfig.PlayerLevel then
|
||
return
|
||
end
|
||
-- this.FunctionClickEvent(FUNCTION_OPEN_TYPE.ASSEMBLE, function ()
|
||
self:StarUpClick()
|
||
-- end)
|
||
end)
|
||
--装备
|
||
Util.AddClick(this.equipBtn, function()
|
||
UIManager.OpenPanel(UIName.RoleEquipPanel, curHeroData, heroDatas, this, isGoToBattle)
|
||
end)
|
||
|
||
--装备
|
||
this.equip = {}
|
||
for i = 1, 8 do
|
||
this.equip[i] = Util.GetGameObject(this.equipInfo, "equip" .. tostring(i))
|
||
Util.AddClick(this.equip[i], function()
|
||
if i <= 4 then
|
||
if isLink then
|
||
return
|
||
end
|
||
UIManager.OpenPanel(UIName.EquipSelectPopup, curHeroData, i, self, nil)
|
||
elseif i == 7 or i == 8 then
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
if curHeroData.star >= tonumber(limit[i - 6]) then
|
||
-- if curHeroData.totemId ~= 0 then
|
||
-- UIManager.OpenPanel(UIName.ToTemUpLvPopup, curHeroData.totemId,curHeroData)
|
||
-- else
|
||
-- UIManager.OpenPanel(UIName.ToTemListPopup, curHeroData)
|
||
-- end
|
||
UIManager.OpenPanel(UIName.EquipSelectPopup, curHeroData, i, self, nil)
|
||
else
|
||
PopupTipPanel.ShowTip(limit[i - 6] .. GetLanguageStrById(10488))
|
||
end
|
||
else
|
||
local isOpen, txt = this:checkUnlockCombatPlan(i - 4)
|
||
if not isOpen then
|
||
PopupTipPanel.ShowTip(txt)
|
||
return
|
||
end
|
||
UIManager.OpenPanel(UIName.CombatPlanSelectPopup, curHeroData, i, self)
|
||
end
|
||
end)
|
||
end
|
||
|
||
--能力预览
|
||
Util.AddClick(this.preViewBtn, function()
|
||
UIManager.OpenPanel(UIName.WarWayPreviewPopup)
|
||
end)
|
||
--能力商城
|
||
Util.AddClick(this.shopAbilityBtn, function()
|
||
UIManager.OpenPanel(UIName.MainShopPanel, SHOP_TYPE.WARWAY_SHOP)
|
||
end)
|
||
--能力帮助
|
||
Util.AddOnceClick(this.abilityHelpBtn, function()
|
||
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.roleSkillLayout,
|
||
this.abilityHelpBtn:GetComponent("RectTransform").localPosition.x - 100,
|
||
this.abilityHelpBtn:GetComponent("RectTransform").localPosition.y)
|
||
end)
|
||
|
||
--芯片图谱
|
||
Util.AddClick(this.atlasChipBtn, function()
|
||
UIManager.OpenPanel(UIName.MedalAtlasPopup)
|
||
end)
|
||
--芯片管理
|
||
Util.AddClick(this.manageChipBtn, function()
|
||
UIManager.OpenPanel(UIName.MedalSuitPopup, curHeroData)
|
||
end)
|
||
--芯片获取
|
||
Util.AddClick(this.gainChipBtn, function()
|
||
UIManager.OpenPanel(UIName.ReconnaissancePanel)
|
||
end)
|
||
--芯片商城
|
||
Util.AddClick(this.shopChipBtn, function()
|
||
UIManager.OpenPanel(UIName.MainShopPanel, 67)
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function RoleInfoPanel:AddListener()
|
||
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.UpdateHeroUpLvAndBreakMaterialShow)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.UpdateHeroUpStarMaterialShow)
|
||
Game.GlobalEvent:AddEvent(GameEvent.HeroGrade.OnHeroGradeChange, this.UpdateHeroInfoData)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Player.OnPlayTitleChange, this.UpdateHeroInfoData)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Player.OnPlayRingChange, this.UpdateHeroInfoData)
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function RoleInfoPanel:RemoveListener()
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.UpdateHeroUpLvAndBreakMaterialShow)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.UpdateHeroUpStarMaterialShow)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HeroGrade.OnHeroGradeChange, this.UpdateHeroInfoData)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Player.OnPlayTitleChange, this.UpdateHeroInfoData)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Player.OnPlayRingChange, this.UpdateHeroInfoData)
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)(初始数据,英雄数据,是否上阵,上阵数量)
|
||
function RoleInfoPanel:OnOpen(_curHeroData, _heroDatas, _isGoToBattle) --, _GoToBattleNum)
|
||
curHeroData, heroDatas, isGoToBattle --[[, GoToBattleNum]] = _curHeroData, _heroDatas,
|
||
_isGoToBattle --, _GoToBattleNum
|
||
end
|
||
|
||
function RoleInfoPanel:OnShow()
|
||
this.HeadFrameView:OnShow()
|
||
this.UpView:OnOpen({ showType = UpViewOpenType.ShowRight, panelType = PanelType.RoleInfo })
|
||
|
||
isClickLeftOrRightBtn = true
|
||
for i = 1, #heroDatas do
|
||
if curHeroData == heroDatas[i] then
|
||
index = i
|
||
end
|
||
end
|
||
teamHero = FormationManager.GetWuJinFormationHeroIds(FormationTypeDef.FORMATION_NORMAL)
|
||
|
||
--加载立绘
|
||
this:UpdateLiveList()
|
||
this:ShowHeroLive()
|
||
|
||
FixedUpdateBeat:Add(this.OnUpdate, self) --长按方法注册
|
||
|
||
--装备
|
||
for i = 1, 6 do
|
||
if effectList[i] ~= nil then
|
||
this.SetActive(effectList[i], false)
|
||
end
|
||
end
|
||
|
||
this:UpdatePanelData() --刷新页面
|
||
this.OnClick(btnType.Info) --默认显示属性
|
||
this:SelectBtn(this.btnUpStar) --默认显示升星
|
||
|
||
-- this.ShowHeroEquip()
|
||
end
|
||
|
||
--界面关闭时调用(用于子类重写)
|
||
function this:OnClose()
|
||
if this.leftLiveObj and leftHeroData then
|
||
UnLoadHerolive(leftHeroData.heroConfig, this.leftLiveObj)
|
||
Util.ClearChild(this.leftObj.transform)
|
||
this.leftLiveObj = nil
|
||
end
|
||
if this.rightLiveObj and rightHeroData then
|
||
UnLoadHerolive(rightHeroData.heroConfig, this.rightLiveObj)
|
||
Util.ClearChild(this.rightObj.transform)
|
||
this.rightLiveObj = nil
|
||
end
|
||
if this.curLiveObj and curHeroData then
|
||
UnLoadHerolive(curHeroData.heroConfig, this.curLiveObj)
|
||
Util.ClearChild(this.curObj.transform)
|
||
this.curLiveObj = nil
|
||
end
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function this:OnDestroy()
|
||
SubUIManager.Close(this.UpView)
|
||
SubUIManager.Close(this.HeadFrameView)
|
||
|
||
|
||
this.leftBtn:GetComponent("Button").enabled = true
|
||
this.rightBtn:GetComponent("Button").enabled = true
|
||
FixedUpdateBeat:Remove(this.OnUpdate, self)
|
||
if this.priThread then
|
||
coroutine.stop(this.priThread)
|
||
this.priThread = nil
|
||
end
|
||
end
|
||
|
||
--加载立绘
|
||
function this:ShowHeroLive()
|
||
if this.leftLiveObj and leftHeroData then
|
||
UnLoadHerolive(leftHeroData.heroConfig, this.leftLiveObj)
|
||
Util.ClearChild(this.leftObj.transform)
|
||
this.leftLiveObj = nil
|
||
end
|
||
if this.rightLiveObj and rightHeroData then
|
||
UnLoadHerolive(rightHeroData.heroConfig, this.rightLiveObj)
|
||
Util.ClearChild(this.rightObj.transform)
|
||
this.rightLiveObj = nil
|
||
end
|
||
if this.curLiveObj and curHeroData then
|
||
UnLoadHerolive(curHeroData.heroConfig, this.curLiveObj)
|
||
Util.ClearChild(this.curObj.transform)
|
||
this.curLiveObj = nil
|
||
end
|
||
|
||
this.leftLiveObj = LoadHerolive(leftHeroData.heroConfig, this.leftObj)
|
||
this.rightLiveObj = LoadHerolive(rightHeroData.heroConfig, this.rightObj)
|
||
this.curLiveObj = LoadHerolive(curHeroData.heroConfig, this.curObj)
|
||
|
||
if this.curLiveObj then
|
||
this.SetActive(this.dragView.gameObject, true)
|
||
this.dragView:SetDragGO(this.curLiveObj)
|
||
else
|
||
this.SetActive(this.dragView.gameObject, false)
|
||
end
|
||
self.dragView:SetDragGO(this.curLiveObj)
|
||
end
|
||
|
||
--刷新左右立绘
|
||
function this:UpdateLiveList()
|
||
local leftIndex = (index - 1 > 0 and index - 1 or #heroDatas)
|
||
leftHeroData = heroDatas[leftIndex]
|
||
|
||
curHeroData = heroDatas[index]
|
||
if curHeroData.heroConfig.HeroSound then
|
||
SoundManager.PlaySound(curHeroData.heroConfig.HeroSound)
|
||
end
|
||
local rightIndex = (index + 1 <= #heroDatas and index + 1 or 1)
|
||
rightHeroData = heroDatas[rightIndex]
|
||
end
|
||
|
||
--长按升级处理
|
||
function this.OnUpdate()
|
||
if _isClicked then
|
||
if Time.realtimeSinceStartup - RoleInfoPanel.timePressStarted > 0.5 then
|
||
_isLongPress = true
|
||
if not _isReqLvUp then
|
||
_isReqLvUp = true
|
||
this:LvUpClick(false)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--更新界面显示
|
||
function this:UpdatePanelData()
|
||
this.SetActive(this.core, curHeroData.heroConfig.HeroValue == 1) --核心卡
|
||
this.SetActive(this.btnAbility, curHeroData.heroConfig.Star >= 5)
|
||
if curHeroData.heroConfig.Material == 1 then
|
||
this:UpdateMaterialHeroData() --刷新材料英雄信息
|
||
return
|
||
end
|
||
|
||
if curHeroData.heroConfig.GrowthSwitch then
|
||
this.HideAllLayout()
|
||
this.SetActive(this.roleInfoLayout, true)
|
||
this:SetSelectBtn(this.btnInfo)
|
||
end
|
||
this:UpdateHeroInfoData() --更新英雄信息数据
|
||
this:GetCurHeroUpLvOrUpStarSData() --获取当前英雄的下一进阶 和 升星 静态数据
|
||
this:UpdateHeroUpStarData() --更新英雄升星数据
|
||
this:UpdateHeroUpLvAndBreakData() --更新英雄升级和进阶数据
|
||
this:UpdateSkillData() --技能信息
|
||
this.UpdateHeroMedalData() --芯片信息
|
||
this:AbilityUpdateUI() --能力界面更新
|
||
this.RefreshPlanSlot() --刷新戒指栏位
|
||
this.ShowHeroEquip() --装备信息
|
||
this.SetActive(this.ResetBtn, curHeroData.lv ~= 1 and not isLink)
|
||
this:IsMaxLevel() --最高级
|
||
this:UpdateHeroEquipCastGod() --铸造装备解锁
|
||
end
|
||
|
||
--技能信息
|
||
function this:UpdateSkillData()
|
||
local oldSkillList = HeroManager.GetSkillIdsByHeroRulesRole(curHeroData.heroConfig.OpenSkillRules, curHeroData.star,
|
||
curHeroData.breakId, curHeroData)
|
||
local oldOpenPassiveSkillRules = HeroManager.GetPassiveSkillIdsByHeroRuleslock(
|
||
curHeroData.heroConfig.OpenPassiveSkillRules, curHeroData.star, curHeroData.breakId, curHeroData)
|
||
for key, value in pairs(oldOpenPassiveSkillRules) do
|
||
table.insert(oldSkillList, value)
|
||
end
|
||
table.sort(oldSkillList, function(a, b)
|
||
return a.skillConfig.Id < b.skillConfig.Id
|
||
end)
|
||
|
||
for i = 1, 5 do
|
||
if oldSkillList[i] and i ~= 1 then
|
||
local triggerCallBack
|
||
this.SetActive(skillShowProList[i - 1], true)
|
||
local sprite = Util.LoadSprite(GetResourcePath(oldSkillList[i].skillConfig.Icon))
|
||
if sprite == nil then
|
||
LogRed("空资源 资源ID:" ..
|
||
oldSkillList[i].skillConfig.Icon .. "|资源名:" .. GetResourcePath(oldSkillList[i].skillConfig.Icon));
|
||
end
|
||
|
||
Util.GetGameObject(skillShowProList[i - 1].transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(
|
||
GetResourcePath(oldSkillList[i].skillConfig.Icon))
|
||
Util.GetGameObject(skillShowProList[i - 1].transform, "skillNameTx"):GetComponent("Text").text =
|
||
GetLanguageStrById(oldSkillList[i].skillConfig.Name)
|
||
local lv
|
||
if SkillLogicConfig[oldSkillList[i].skillConfig.Id] ~= nil then
|
||
Util.GetGameObject(skillShowProList[i - 1].transform, "Lv/LvTx"):GetComponent("Text").text =
|
||
SkillLogicConfig[oldSkillList[i].skillConfig.Id].Level
|
||
lv = SkillLogicConfig[oldSkillList[i].skillConfig.Id].Level
|
||
else
|
||
Util.GetGameObject(skillShowProList[i - 1].transform, "Lv/LvTx"):GetComponent("Text").text =
|
||
PassiveSkillLogicConfig[oldSkillList[i].skillConfig.Id].Level
|
||
lv = PassiveSkillLogicConfig[oldSkillList[i].skillConfig.Id].Level
|
||
end
|
||
Util.SetGray(Util.GetGameObject(skillShowProList[i - 1].transform, "icon"), oldSkillList[i].lock)
|
||
Util.AddOnceClick(skillShowProList[i - 1], function()
|
||
if Game.GlobalEvent:HasEvent(GameEvent.UI.OnClose, triggerCallBack) then
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack)
|
||
end
|
||
local skillLogicConfig_
|
||
local isPassive
|
||
local skillPos
|
||
if skillLogicConfig_ == nil then
|
||
skillLogicConfig_ = ConfigManager.TryGetConfigDataByKey(ConfigName.SkillLogicConfig, "Id",
|
||
oldSkillList[i].skillConfig.Id)
|
||
isPassive = false
|
||
end
|
||
if skillLogicConfig_ == nil then
|
||
skillLogicConfig_ = ConfigManager.TryGetConfigDataByKey(ConfigName.PassiveSkillLogicConfig, "Id",
|
||
oldSkillList[i].skillConfig.Id)
|
||
isPassive = true
|
||
end
|
||
|
||
if isPassive then
|
||
for j = 1, #curHeroData.heroConfig.OpenPassiveSkillRules do
|
||
if curHeroData.heroConfig.OpenPassiveSkillRules[j][2] == skillLogicConfig_.Group then
|
||
skillPos = curHeroData.heroConfig.OpenPassiveSkillRules[j][1]
|
||
break
|
||
end
|
||
end
|
||
else
|
||
for j = 1, #curHeroData.heroConfig.OpenSkillRules do
|
||
if curHeroData.heroConfig.OpenSkillRules[j][2] == skillLogicConfig_.Group then
|
||
skillPos = curHeroData.heroConfig.OpenSkillRules[j][1]
|
||
break
|
||
end
|
||
end
|
||
end
|
||
local maxLv = HeroManager.GetHeroSkillMaxLevel(curHeroData.heroConfig.Id, skillPos)
|
||
local panel = UIManager.OpenPanel(UIName.SkillInfoPopup, oldSkillList[i], 1, 8, maxLv, i - 1, lv)
|
||
Game.GlobalEvent:AddEvent(GameEvent.UI.OnClose, triggerCallBack)
|
||
end)
|
||
else
|
||
if i ~= 1 then
|
||
this.SetActive(skillShowProList[i - 1], false)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--刷新材料英雄信息
|
||
function this:UpdateMaterialHeroData()
|
||
if not this.isFirstOpen then
|
||
this.OnClick(btnType.Info)
|
||
end
|
||
|
||
self.dragView:SetDragGO(this.curLiveObj)
|
||
SetHeroStars(self.starGrid, curHeroData.star)
|
||
this.heroName.text = GetLanguageStrById(curHeroData.name)
|
||
this.proImage.sprite = Util.LoadSprite(GetProStrImageByProNum(curHeroData.heroConfig.PropertyName))
|
||
|
||
this.power.text = 1
|
||
this.posText.text = GetLanguageStrById(curHeroData.heroConfig.HeroLocation)
|
||
this.lv.text = 1
|
||
this.maxLv.text = ""
|
||
this.SetActive(this.profession.gameObject, false)
|
||
|
||
this:ProShow(this.atkPro, nil, HeroProType.Attack)
|
||
this:ProShow(this.hpPro, nil, HeroProType.Hp)
|
||
this:ProShow(this.phyDef, nil, HeroProType.PhysicalDefence)
|
||
this:ProShow(this.Speed, nil, HeroProType.Speed)
|
||
|
||
this.SetActive(this.equipLinkTip, false)
|
||
this.SetActive(this.infoLinkTip, false)
|
||
this.SetActive(this.upLvBtn, false)
|
||
this.SetActive(this.upClassBtn, false)
|
||
this.SetActive(this.upLv, false)
|
||
this.SetActive(this.ResetBtn, false)
|
||
this.SetActive(this.skillGrid, false)
|
||
this.SetActive(Util.GetGameObject(this.roleInfoLayout, "Bg/hide"), false)
|
||
this.SetActive(this.proHelpBtn, false)
|
||
-- this.SetActive(this.btnInfo,false)
|
||
this.SetActive(this.btnEquip, false)
|
||
this.SetActive(this.btnCulture, false)
|
||
Util.GetGameObject(this.roleInfoLayout, "Info"):GetComponent("Text").enabled = false
|
||
this.SetActive(this.maxLvTip, false)
|
||
this.SetActive(this.LockingBtn, false)
|
||
end
|
||
|
||
--更新英雄信息数据
|
||
function this:UpdateHeroInfoData()
|
||
isLink = PowerCenterManager.FindHeroIsLinkHeroForDynamicId(curHeroData.dynamicId)
|
||
this.equipLinkTip:SetActive(isLink)
|
||
this.infoLinkTip:SetActive(isLink)
|
||
this.SetActive(this.profession.gameObject, true)
|
||
this.SetActive(Util.GetGameObject(this.roleInfoLayout, "Bg/hide"), true)
|
||
this.SetActive(this.proHelpBtn, true)
|
||
this.SetActive(this.btnInfo, true)
|
||
this.SetActive(this.btnEquip, true)
|
||
this.SetActive(this.btnCulture, true)
|
||
this.SetActive(this.skillGrid, true)
|
||
Util.GetGameObject(this.roleInfoLayout, "Info"):GetComponent("Text").enabled = true
|
||
this.SetActive(this.LockingBtn, true)
|
||
|
||
this.lockTxt.text = LockingBtnState[curHeroData.lockState + 1].txt
|
||
this.LockingBtn:GetComponent("Image").sprite = LockingBtnState[curHeroData.lockState + 1].img
|
||
|
||
if teamHero[curHeroData.dynamicId] then
|
||
isGoToBattle = true
|
||
else
|
||
isGoToBattle = false
|
||
end
|
||
|
||
curTuPoRankUpConfig = heroRankupConfig[curHeroData.breakId]
|
||
curStarRankUpConfig = heroRankupConfig[curHeroData.upStarId]
|
||
if curHeroData.breakId == 0 then
|
||
curTuPoRankUpConfig = heroRankupConfig[1]
|
||
end
|
||
|
||
--修改 此处不加阵容属性
|
||
allAddProVal = HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false)
|
||
this.power.text = allAddProVal[HeroProType.WarPower]
|
||
|
||
--属性
|
||
self.dragView:SetDragGO(this.curLiveObj)
|
||
SetHeroStars(self.starGrid, curHeroData.star)
|
||
this.heroName.text = GetLanguageStrById(curHeroData.name)
|
||
this.proImage.sprite = Util.LoadSprite(GetProStrImageByProNum(curHeroData.heroConfig.PropertyName))
|
||
|
||
this:ProShow(this.atkPro, allAddProVal, HeroProType.Attack)
|
||
this:ProShow(this.hpPro, allAddProVal, HeroProType.Hp)
|
||
this:ProShow(this.phyDef, allAddProVal, HeroProType.PhysicalDefence)
|
||
this:ProShow(this.Speed, allAddProVal, HeroProType.Speed)
|
||
|
||
this.profession:GetComponent("Image").sprite = Util.LoadSprite(ProfessionImage[curHeroData.heroConfig.Profession])
|
||
this.lv.text = curHeroData.lv
|
||
if isLink then
|
||
this.maxLv.text = ""
|
||
else
|
||
this.maxLv.text = "/" .. this:GetLvEnd()
|
||
end
|
||
|
||
-- this.UpdateHeroUpStarProUpSkillShow(this.skillGrid,curHeroData.skillIdList)
|
||
|
||
this.posText.text = GetLanguageStrById(curHeroData.heroConfig.HeroLocation)
|
||
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HeroGrade.OnHeroGradeChange)
|
||
end
|
||
|
||
--获取当前最大等级
|
||
function this:GetLvEnd()
|
||
local curLvEnd = 30
|
||
if curHeroData.breakId > 0 then
|
||
curLvEnd = heroRankupConfig[curHeroData.breakId].OpenLevel
|
||
end
|
||
if curHeroData.upStarId > 0 then
|
||
if heroRankupConfig[curHeroData.upStarId].OpenLevel > curLvEnd then
|
||
curLvEnd = heroRankupConfig[curHeroData.upStarId].OpenLevel
|
||
end
|
||
end
|
||
return curLvEnd
|
||
end
|
||
|
||
--最高级
|
||
function this:IsMaxLevel()
|
||
if not HeroManager.heroLvEnd[curHeroData.heroConfig.Id] or curHeroData.lv >= HeroManager.heroLvEnd[curHeroData.heroConfig.Id] then
|
||
this.SetActive(this.upLv, false)
|
||
this.SetActive(this.maxLvTip, not isLink)
|
||
this.SetActive(this.upLvBtn, false)
|
||
this.SetActive(this.upClassBtn, false)
|
||
return true
|
||
else
|
||
this.SetActive(this.upLv, not isLink)
|
||
this.SetActive(this.maxLvTip, false)
|
||
this.SetActive(this.upLvBtn, not isLink)
|
||
Util.SetGray(this.proHelpBtn, false)
|
||
return false
|
||
end
|
||
end
|
||
|
||
--英雄属性
|
||
function this:ProShow(go, allAddProVal, HeroProType)
|
||
local curProSConFig = ConfigManager.GetConfigData(ConfigName.PropertyConfig, HeroProType)
|
||
Util.GetGameObject(go, "proName"):GetComponent("Text").text = GetLanguageStrById(curProSConFig.Info)
|
||
if allAddProVal == nil then
|
||
Util.GetGameObject(go, "proValue"):GetComponent("Text").text = 1
|
||
else
|
||
Util.GetGameObject(go, "proValue"):GetComponent("Text").text = allAddProVal[HeroProType]
|
||
end
|
||
Util.GetGameObject(go, "Image"):GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(propertyConfig
|
||
[HeroProType].PropertyIcon))
|
||
end
|
||
|
||
--更新英雄升级和进阶数据
|
||
function this:UpdateHeroUpLvAndBreakData()
|
||
this:UpdateHeroUpLvAndBreakMaterialShow()
|
||
|
||
this:RefreshRedPoint()
|
||
|
||
-- 升级获取突破 和 升星相应heroRankUpConfig静态数据
|
||
if isHeroUpTuPo and upTuPoRankUpConfig and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
this.SetActive(this.upLv, false)
|
||
this.SetActive(this.upClassBtn, not isLink)
|
||
|
||
this.upLvBtn:SetActive(not isLink)
|
||
-- this.up1LvBtn:SetActive(false)
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
return
|
||
else
|
||
this.SetActive(this.upLv, not isLink)
|
||
this.SetActive(this.upClassBtn, false)
|
||
end
|
||
end
|
||
|
||
--刷新红点
|
||
function this:RefreshRedPoint()
|
||
this.SetActive(this.btnInfoRedPoint,
|
||
HeroManager.LvUpBtnRedPoint(curHeroData) and isUpLvMaterials and isGoToBattle and not isLink)
|
||
local WearmedalListWear = MedalManager.MedalDaraByHero(curHeroData.dynamicId)
|
||
local isOn = false
|
||
for i = 1, 4 do
|
||
local shipList = MedalManager.MedalDaraBySite(i, curHeroData.dynamicId)
|
||
if #shipList > 0 and not WearmedalListWear[i] then
|
||
if isOn == false then
|
||
isOn = true
|
||
end
|
||
end
|
||
end
|
||
|
||
local isCanUpStar = HeroManager.IsShowUpStarRedPoint(curHeroData)
|
||
|
||
local abilityPointStateRes = HeroManager.GetCurHeroAbilityIsShowRedPoint(curHeroData)
|
||
local isAbility = abilityPointStateRes["ability" .. tostring(1)] or abilityPointStateRes["ability" .. tostring(2)] or
|
||
abilityPointStateRes["ability" .. tostring(3)]
|
||
|
||
this.SetActive(this.btnCultureRedPoint,
|
||
isGoToBattle and (isOn or isCanUpStar or isAbility) and
|
||
(HeroManager.IsCompetencySkills(1) or HeroManager.IsCompetencySkills(3)))
|
||
this.SetActive(this.btnUpStarRedpoint, isGoToBattle and isCanUpStar and not isLink)
|
||
this.SetActive(this.btnChipRedPoint, isGoToBattle and isOn)
|
||
end
|
||
|
||
--更新英雄升级和进阶的材料显示
|
||
function this:UpdateHeroUpLvAndBreakMaterialShow()
|
||
if this.isCanAdvanced == true then
|
||
local costList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
if isHeroUpTuPo and upTuPoRankUpConfig and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
costItemList = upTuPoRankUpConfig.ConsumeMaterial
|
||
else
|
||
local costData = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig, curHeroData.lv).Consume
|
||
for m = 4, 0, -1 do
|
||
local isOk = true
|
||
costList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
local lv = m
|
||
for i = 0, m do
|
||
-- if curHeroData.lv + i >= HeroMaxLevel - 1 then lv = i break end
|
||
local costItemList1 = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig, curHeroData.lv + i)
|
||
.Consume
|
||
if costItemList1 == nil or #costItemList1 <= 1 then break end
|
||
for j = 1, #costList do
|
||
costList[j][1] = costData[j][1]
|
||
costList[j][2] = costList[j][2] + costItemList1[j][2]
|
||
end
|
||
end
|
||
for n = 1, #costList do
|
||
if BagManager.GetItemCountById(costList[n][1]) < costList[n][2] then
|
||
isOk = false
|
||
end
|
||
end
|
||
if m == 0 and isOk == false then
|
||
this.AddLv = lv + 1
|
||
-- LogError(this.AddLv)
|
||
end
|
||
if isOk == true then
|
||
this.AddLv = lv + 1
|
||
-- LogError(this.AddLv)
|
||
break
|
||
end
|
||
end
|
||
costItemList = costList
|
||
end
|
||
end
|
||
|
||
if not this:IsMaxLevel() then
|
||
Util.ClearChild(this.itemGrid.transform)
|
||
isUpLvMaterials = true
|
||
for i = 1, #costItemList do
|
||
if costItemList[i][1] == 0 then
|
||
elseif costItemList[i][1] ~= 14 then --经验
|
||
local go = newObject(this.itemPre)
|
||
go.transform:SetParent(this.itemGrid.transform)
|
||
go.transform.localScale = Vector3.one
|
||
go.transform.localPosition = Vector3.zero
|
||
this.SetActive(go, true)
|
||
Util.GetGameObject(go.transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(
|
||
itemConfig[costItemList[i][1]].ResourceID))
|
||
if BagManager.GetItemCountById(costItemList[i][1]) < costItemList[i][2] then
|
||
isUpLvMaterials = false
|
||
Util.GetGameObject(go.transform, "Text"):GetComponent("Text").text = string.format(
|
||
"<color=#FF0000FF>%s</color>", PrintWanNum2(costItemList[i][2]))
|
||
else
|
||
Util.GetGameObject(go.transform, "Text"):GetComponent("Text").text = string.format("%s",
|
||
PrintWanNum2(costItemList[i][2]))
|
||
end
|
||
Util.AddOnceClick(Util.GetGameObject(go.transform, "icon"), function()
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, costItemList[i][1])
|
||
end)
|
||
else
|
||
--金钱
|
||
if BagManager.GetItemCountById(costItemList[i][1]) < costItemList[i][2] then
|
||
isUpLvMaterials = false
|
||
this.upLvGoldText.text = string.format("<color=#FF0000FF>%s</color>",
|
||
PrintWanNum2(costItemList[i][2]))
|
||
else
|
||
this.upLvGoldText.text = string.format("%s", PrintWanNum2(costItemList[i][2]))
|
||
end
|
||
Util.AddOnceClick(this.upLvGoldBtn, function()
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, costItemList[i][1])
|
||
end)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--更新英雄升星数据
|
||
function this:UpdateHeroUpStarData()
|
||
this:UpdateHeroUpStarMaterialShow()
|
||
-- this:UpdateHeroUpLvAndBreakMaterialShow()
|
||
|
||
--初始化技能显示
|
||
this.skillIcon.sprite = Util.LoadSprite("X1_tongyong_daojukuang_01")
|
||
this.skillIcon.color = Color.New(255 / 255, 255 / 255, 255 / 255, 100 / 255)
|
||
this.SetActive(this.skillImage, false)
|
||
|
||
if curHeroData.star == curHeroData.heroConfig.MaxRank then
|
||
elseif curHeroData.star > 4 and curHeroData.star < 10 then
|
||
this.skillImage:SetActive(true)
|
||
local skillPos = ConfigManager.TryGetConfigDataByKey(ConfigName.UnlockSkill, "Star", curHeroData.star + 1)
|
||
.SkillPos
|
||
local skillLevel = ConfigManager.TryGetConfigDataByKey(ConfigName.UnlockSkill, "Star", curHeroData.star + 1)
|
||
.UnlockLV
|
||
local isPassive = false
|
||
local skillGroupID
|
||
for i = 1, #curHeroData.heroConfig.OpenSkillRules do
|
||
if curHeroData.heroConfig.OpenSkillRules[i][1] == skillPos then
|
||
skillGroupID = curHeroData.heroConfig.OpenSkillRules[i][2]
|
||
end
|
||
end
|
||
for i = 1, #curHeroData.heroConfig.OpenPassiveSkillRules do
|
||
if curHeroData.heroConfig.OpenPassiveSkillRules[i][1] == skillPos then
|
||
isPassive = true
|
||
skillGroupID = curHeroData.heroConfig.OpenPassiveSkillRules[i][2]
|
||
end
|
||
end
|
||
local skilllogicconfig = ConfigManager.TryGetConfigDataByDoubleKey(
|
||
isPassive and ConfigName.PassiveSkillLogicConfig or ConfigName.SkillLogicConfig, "Group", skillGroupID,
|
||
"Level",
|
||
skillLevel)
|
||
local skillConfig = ConfigManager.TryGetConfigData(
|
||
isPassive and ConfigName.PassiveSkillConfig or ConfigName.SkillConfig, skilllogicconfig.Id)
|
||
this.skillIcon.sprite = Util.LoadSprite(GetResourcePath(skillConfig.Icon))
|
||
this.skillIcon.color = Color.New(255 / 255, 255 / 255, 255 / 255, 255 / 255)
|
||
this.skillLv.text = skillLevel
|
||
|
||
if curHeroData.star == 5 or curHeroData.star == 14 then
|
||
this.skillIcon.sprite = Util.LoadSprite(GetPictureFont("X1_yingxiongxiangqing_quanjineng"))
|
||
end
|
||
end
|
||
|
||
--进阶祭品条件
|
||
local curUpStarData = HeroManager.GetHeroCurUpStarInfo(curHeroData.dynamicId)
|
||
if curUpStarData and #curUpStarData > 0 then
|
||
this.SetActive(this.upStar, true)
|
||
this.SetActive(this.maxStar, false)
|
||
upStarConsumeMaterial = {}
|
||
upStarMaterialIsAll = {}
|
||
upStarPreList = {}
|
||
local childCount = this.upStarGrid.transform.childCount
|
||
for i = 1, childCount do
|
||
local go = Util.GetGameObject(this.upStarGrid.transform, "upStarPre" .. i)
|
||
local icon = Util.GetGameObject(go.transform, "icon"):GetComponent("Image")
|
||
local frame = Util.GetGameObject(go.transform, "frame"):GetComponent("Image")
|
||
local addBtn = Util.GetGameObject(go.transform, "add")
|
||
local starGrid = Util.GetGameObject(go.transform, "star/starGrid")
|
||
local num = Util.GetGameObject(go.transform, "num"):GetComponent("Text")
|
||
local name = Util.GetGameObject(go.transform, "name"):GetComponent("Text")
|
||
|
||
if i <= #curUpStarData then -- 有数据
|
||
num.gameObject:SetActive(true)
|
||
upStarPreList[i] = go
|
||
upStarConsumeMaterial[i] = {}
|
||
upStarMaterialIsAll[i] = 2
|
||
|
||
frame.color = Color.New(255 / 255, 255 / 255, 255 / 255, 255 / 255)
|
||
icon.color = Color.New(255 / 255, 255 / 255, 255 / 255, 255 / 255)
|
||
|
||
if curUpStarData[i].upStarMaterialsData.Issame == 1 or curUpStarData[i].upStarMaterialsData.IsId > 0 then
|
||
if curUpStarData[i].upStarMaterialsData.Issame == 1 then
|
||
icon.sprite = Util.LoadSprite(GetResourcePath(curHeroData.heroConfig.Icon))
|
||
frame.sprite = Util.LoadSprite(GetQuantityImageByquality(curHeroData.heroConfig.Quality,
|
||
curUpStarData[i].upStarMaterialsData.StarLimit))
|
||
name.text = GetLanguageStrById(curHeroData.heroConfig.ReadingName)
|
||
elseif curUpStarData[i].upStarMaterialsData.IsId > 0 then
|
||
local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig,
|
||
curUpStarData[i].upStarMaterialsData.IsId)
|
||
icon.sprite = Util.LoadSprite(GetResourcePath(heroConfig.Icon))
|
||
frame.sprite = Util.LoadSprite(GetQuantityImageByquality(heroConfig.Quality,
|
||
curUpStarData[i].upStarMaterialsData.StarLimit))
|
||
name.text = GetLanguageStrById(heroConfig.ReadingName)
|
||
end
|
||
else
|
||
icon.sprite = Util.LoadSprite(GetNoTargetHero(curUpStarData[i].upStarMaterialsData.StarLimit))
|
||
frame.sprite = Util.LoadSprite(GetQuantityImageByquality(nil,
|
||
curUpStarData[i].upStarMaterialsData.StarLimit))
|
||
name.text = ""
|
||
end
|
||
|
||
local upStarHeroListData = HeroManager.GetUpStarHeroListData(curUpStarData[i].upStarMaterialsData.Id,
|
||
curHeroData)
|
||
addBtn:SetActive(true)
|
||
num.text = string.format("<color=#FF0000FF>%s/%s</color>", 0, curUpStarData[i].upStarData[4])
|
||
SetHeroStars(starGrid, curUpStarData[i].upStarMaterialsData.StarLimit)
|
||
starGrid:SetActive(true)
|
||
Util.AddOnceClick(addBtn, function()
|
||
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)
|
||
else --无数据
|
||
addBtn:SetActive(false)
|
||
starGrid:SetActive(false)
|
||
num.gameObject:SetActive(false)
|
||
name.text = ""
|
||
|
||
frame.sprite = Util.LoadSprite("X1_tongyong_daojukuang_07")
|
||
frame.color = Color.New(255 / 255, 255 / 255, 255 / 255, 128 / 255)
|
||
--icon.sprite = Util.LoadSprite("X1_tongyong_mofazhen")
|
||
icon.color = Color.New(255 / 255, 255 / 255, 255 / 255, 26 / 255)
|
||
end
|
||
end
|
||
else
|
||
this.SetActive(this.upStar, false)
|
||
this.SetActive(this.maxStar, true)
|
||
end
|
||
--自动选择进阶英雄材料
|
||
this:AutoSelectUpStarHeroList(curUpStarData)
|
||
end
|
||
|
||
--更新英雄升星属性
|
||
function this:UpdateHeroUpStarProUpShow()
|
||
if upStarRankUpConfig and upStarRankUpConfig.Id then
|
||
SetHeroStars(this.nextStarGrid, curHeroData.star + 1)
|
||
|
||
local upInfoGrid = Util.GetGameObject(this.upStar, "upInfoGrid")
|
||
local Info1 = Util.GetGameObject(upInfoGrid, "upInfoPro1/Info")
|
||
local curLv = HeroManager.GetCurHeroStarLvEnd(1, curHeroData)
|
||
if curLv == nil then
|
||
curLv = 30
|
||
end
|
||
Util.GetGameObject(Info1, "cur"):GetComponent("Text").text = curLv
|
||
Util.GetGameObject(Info1, "next"):GetComponent("Text").text = HeroManager.GetCurHeroStarLvEnd(2, curHeroData,
|
||
curHeroData.breakId, upStarRankUpConfig.Id)
|
||
|
||
local Info2 = Util.GetGameObject(upInfoGrid, "upInfoPro2/Info")
|
||
local Info2Title = Util.GetGameObject(Info2, "title"):GetComponent("Text")
|
||
local Info2Cur = Util.GetGameObject(Info2, "cur"):GetComponent("Text")
|
||
local Info2Next = Util.GetGameObject(Info2, "next"):GetComponent("Text")
|
||
|
||
local title2 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip
|
||
if title2 == nil then
|
||
Info2Title.text = "--"
|
||
else
|
||
Info2Title.text = GetLanguageStrById(title2)
|
||
end
|
||
local cur2 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip1
|
||
if cur2 == nil then
|
||
Info2Cur.text = "--"
|
||
else
|
||
Info2Cur.text = cur2 * 100 .. "%"
|
||
if title2 ~= nil and tonumber(title2) == 2010318 then
|
||
Info2Cur.text = cur2
|
||
end
|
||
end
|
||
local next2 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip2
|
||
if next2 == nil then
|
||
Info2Next.text = "--"
|
||
else
|
||
Info2Next.text = next2 * 100 .. "%"
|
||
if title2 ~= nil and tonumber(title2) == 2010318 then
|
||
Info2Next.text = next2
|
||
end
|
||
end
|
||
|
||
local Info3 = Util.GetGameObject(upInfoGrid, "upInfoPro3/Info")
|
||
local Info3Title = Util.GetGameObject(Info3, "title"):GetComponent("Text")
|
||
local Info3Cur = Util.GetGameObject(Info3, "cur"):GetComponent("Text")
|
||
local Info3Next = Util.GetGameObject(Info3, "next"):GetComponent("Text")
|
||
|
||
local title3 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip3
|
||
if title3 == nil then
|
||
Info3Title.text = "--"
|
||
else
|
||
Info3Title.text = GetLanguageStrById(title3)
|
||
end
|
||
local cur3 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip4
|
||
if cur3 == nil then
|
||
Info3Cur.text = "--"
|
||
else
|
||
Info3Cur.text = cur3 * 100 .. "%"
|
||
end
|
||
local next3 = ConfigManager.TryGetConfigData(ConfigName.HeroStarConfig, curHeroData.star).Tip5
|
||
if next3 == nil then
|
||
Info3Next.text = "--"
|
||
else
|
||
Info3Next.text = next3 * 100 .. "%"
|
||
end
|
||
|
||
--是否为最大等级
|
||
if not HeroManager.heroLvEnd[curHeroData.heroConfig.Id] or curHeroData.lv >= HeroManager.heroLvEnd[curHeroData.heroConfig.Id] then
|
||
-- PopupTipPanel.ShowTipByLanguageId(11846)
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
|
||
this.SetActive(this.maxLvTip, not isLink)
|
||
this.SetActive(this.upLvBtn, false)
|
||
this.SetActive(this.upLv, false)
|
||
this.SetActive(this.upClassBtn, false)
|
||
else
|
||
this.SetActive(this.maxLvTip, false)
|
||
this.SetActive(this.upLvBtn, not isLink)
|
||
this.SetActive(this.upLv, not isLink)
|
||
end
|
||
if PlayerManager.level < upStarRankUpConfig.PlayerLevel then
|
||
this.SetActive(this.upStarLimit, true)
|
||
this.upStarLimitTxt.text = string.format(GetLanguageStrById(50515), upStarRankUpConfig.PlayerLevel)
|
||
else
|
||
this.SetActive(this.upStarLimit, false)
|
||
end
|
||
end
|
||
end
|
||
|
||
--单个技能显示
|
||
function this.UpdateHeroUpStarProUpSkillShow(skillGridGO, skillTabs)
|
||
local triggerCallBack
|
||
for i = 1, skillGridGO.transform.childCount do
|
||
local go = skillGridGO.transform:GetChild(i - 1).gameObject
|
||
if #skillTabs >= i then
|
||
local curSkillData = skillTabs[i]
|
||
if curSkillData and curSkillData.skillConfig and curSkillData.skillConfig.Name then
|
||
this.SetActive(go, true)
|
||
local upGo = Util.GetGameObject(go.transform, "up")
|
||
if upGo then
|
||
if curSkillData.isShowUpImage ~= nil and curSkillData.isShowUpImage == false then
|
||
this.SetActive(upGo, false)
|
||
else
|
||
this.SetActive(upGo, true)
|
||
end
|
||
end
|
||
Util.GetGameObject(go.transform, "skillImage/skillName"):GetComponent("Text").text = GetLanguageStrById(
|
||
curSkillData.skillConfig.Name)
|
||
else
|
||
this.SetActive(go, false)
|
||
end
|
||
|
||
Util.AddOnceClick(Util.GetGameObject(go.transform, "icon"), function()
|
||
if Game.GlobalEvent:HasEvent(GameEvent.UI.OnClose, triggerCallBack) then
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack)
|
||
end
|
||
local maxLv = HeroManager.GetHeroSkillMaxLevel(curHeroData.heroConfig.Id, i)
|
||
local skillInfoPopup = UIManager.OpenPanel(UIName.SkillInfoPopup, curSkillData, 1, 8, maxLv, i)
|
||
skillGridGO:GetComponent("Canvas").sortingOrder = skillInfoPopup.sortingOrder + 1
|
||
triggerCallBack = function(panelType, p)
|
||
if panelType == UIName.SkillInfoPopup and skillInfoPopup == p then --监听到SkillInfoPopup关闭,把层级设回去
|
||
skillGridGO:GetComponent("Canvas").sortingOrder = this.sortingOrder + 1
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack)
|
||
end
|
||
end
|
||
Game.GlobalEvent:AddEvent(GameEvent.UI.OnClose, triggerCallBack)
|
||
end)
|
||
else
|
||
this.SetActive(go, false)
|
||
end
|
||
end
|
||
end
|
||
|
||
------------------------------------------------------升星----------------------------------------------------------
|
||
--升星选择祭品后刷新界面
|
||
function this: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 then
|
||
if LengthOfTable(upStarHeroListData.heroList) >= curUpStarData[i].upStarData[4] then
|
||
for i = 1, curUpStarData[i].upStarData[4] do
|
||
if upStarHeroListData.heroList[i].lockState == 0 and upStarHeroListData.heroList[i].isFormation == "" then
|
||
table.insert(curSelectHeroList, upStarHeroListData.heroList[i])
|
||
end
|
||
end
|
||
self.UpdateUpStarPosHeroData(curSelectHeroList)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--更新英雄升星材料显示
|
||
function this:UpdateHeroUpStarMaterialShow()
|
||
--进阶金币 进化药剂条件
|
||
if upStarRankUpConfig then
|
||
isUpStarMaterials = true
|
||
local ConsumeMaterial = upStarRankUpConfig.ConsumeMaterial
|
||
this.SetActive(this.goldGrid, false)
|
||
this.SetActive(this.goldImage, false)
|
||
this.SetActive(this.gold2Image, false)
|
||
if ConsumeMaterial and #ConsumeMaterial[1] > 1 then
|
||
if ConsumeMaterial[1][2] > 0 then
|
||
this.SetActive(this.goldGrid, true)
|
||
this.SetActive(this.goldImage, true)
|
||
this.goldImage:GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(itemConfig
|
||
[ConsumeMaterial[1][1]].ResourceID))
|
||
if BagManager.GetItemCountById(ConsumeMaterial[1][1]) < ConsumeMaterial[1][2] then
|
||
isUpStarMaterials = false
|
||
this.goldText.color = UIColorNew.RED
|
||
else
|
||
this.goldText.color = UIColorNew.GREEN
|
||
end
|
||
this.goldText.text = BagManager.GetItemCountById(ConsumeMaterial[1][1]) .. "/" .. ConsumeMaterial[1][2]
|
||
Util.AddOnceClick(this.goldBtn, function()
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, ConsumeMaterial[1][1])
|
||
end)
|
||
else
|
||
this.SetActive(this.goldImage, false)
|
||
end
|
||
end
|
||
if ConsumeMaterial and #ConsumeMaterial >= 2 then
|
||
if ConsumeMaterial[1][2] > 0 then
|
||
this.SetActive(this.goldGrid, true)
|
||
this.SetActive(this.goldImage, true)
|
||
this.goldImage:GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(itemConfig
|
||
[ConsumeMaterial[1][1]].ResourceID))
|
||
if BagManager.GetItemCountById(ConsumeMaterial[1][1]) < ConsumeMaterial[1][2] then
|
||
isUpStarMaterials = false
|
||
this.goldText.color = UIColorNew.RED
|
||
else
|
||
this.goldText.color = UIColorNew.GREEN
|
||
end
|
||
this.goldText.text = BagManager.GetItemCountById(ConsumeMaterial[1][1]) .. "/" .. ConsumeMaterial[1][2]
|
||
Util.AddOnceClick(this.goldBtn, function()
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, ConsumeMaterial[1][1])
|
||
end)
|
||
else
|
||
this.SetActive(this.goldImage, false)
|
||
end
|
||
if ConsumeMaterial[2][2] > 0 then
|
||
this.SetActive(this.goldGrid, true)
|
||
this.SetActive(this.gold2Image, true)
|
||
this.gold2Image:GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(itemConfig
|
||
[ConsumeMaterial[2][1]].ResourceID))
|
||
if BagManager.GetItemCountById(ConsumeMaterial[2][1]) < ConsumeMaterial[2][2] then
|
||
isUpStarMaterials = false
|
||
this.gold2Text.color = UIColorNew.RED
|
||
else
|
||
this.gold2Text.color = UIColorNew.GREEN
|
||
end
|
||
this.gold2Text.text = BagManager.GetItemCountById(ConsumeMaterial[2][1]) .. "/" .. ConsumeMaterial[2][2]
|
||
Util.AddOnceClick(this.gold2Btn, function()
|
||
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, ConsumeMaterial[2][1])
|
||
end)
|
||
else
|
||
this.SetActive(this.gold2Image, false)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--分析设置升星界面显示的英雄list数据 如果当前升星材料的坑位的英雄数据与 以其他坑位有重合并且选择上的英雄不显示 如果是当前坑位显示的英雄显示对勾
|
||
--1 消耗的总消耗组 2 当前坑位可选择的所有英雄
|
||
function this:SetShowHeroListData(upStarConsumeMaterial, curHeroList)
|
||
local curEndShowHeroListData2 = {}
|
||
for i = 1, #curHeroList do
|
||
table.insert(curEndShowHeroListData2, curHeroList[i])
|
||
end
|
||
local curEndShowHeroListData = {}
|
||
for i, v in pairs(curEndShowHeroListData2) do
|
||
local isFormations = {}
|
||
for n, w in pairs(FormationManager.formationList) do
|
||
for m = 1, #w.teamHeroInfos do
|
||
if w.teamHeroInfos[m] and v.dynamicId == w.teamHeroInfos[m].heroId then
|
||
--队伍名称 队伍id
|
||
local isFormationStr = ""
|
||
local curFormationId = 0
|
||
local temp = HeroManager.GetHeroFormationStr2(n)
|
||
if temp and temp ~= "" then
|
||
if v.isFormation and v.isFormation == "" then
|
||
isFormationStr, curFormationId = HeroManager.GetHeroFormationStr2(n)
|
||
table.insert(isFormations, curFormationId)
|
||
else
|
||
isFormationStr, curFormationId = HeroManager.GetHeroFormationStr2(n)
|
||
isFormationStr = "、" .. isFormationStr
|
||
table.insert(isFormations, curFormationId)
|
||
v.isFormation = v.isFormation .. isFormationStr
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
--所有的所在队伍id,
|
||
curEndShowHeroListData2[i].isFormations = isFormations
|
||
|
||
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.dynamicId == upStarConsumeMaterial[j][k] then
|
||
v.isSelect = 1
|
||
end
|
||
end
|
||
else
|
||
for i, v in pairs(curEndShowHeroListData) do
|
||
if v.dynamicId == upStarConsumeMaterial[j][k] 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 this:GetCurHeroUpLvOrUpStarSData()
|
||
isHeroUpTuPo = false
|
||
isHeroUpStar = false
|
||
this.isCanAdvanced = true
|
||
upTuPoRankUpConfig = {}
|
||
upStarRankUpConfig = {}
|
||
this.residualUpLv = 0
|
||
for i, v in ConfigPairs(heroRankupConfig) do
|
||
--初始星级相等
|
||
if v.Star == curHeroData.heroConfig.Star then
|
||
--1进阶
|
||
if v.Show == 1 then
|
||
if v.Id ~= curHeroData.breakId and curHeroData.lv == v.LimitLevel then --and curHeroData.star == v.LimitStar
|
||
isHeroUpTuPo = true
|
||
upTuPoRankUpConfig = v
|
||
end
|
||
|
||
if v.Id ~= curHeroData.breakId and v.LimitLevel - curHeroData.lv <= 5 and curHeroData.lv < v.LimitLevel and v.LimitLevel ~= curHeroData.lv then
|
||
local costData = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig, curHeroData.lv).Consume
|
||
for m = 4, 0, -1 do
|
||
local isCanBreach = true --是否可突破
|
||
costItemList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
for i = 0, m do
|
||
local costItemListConfig = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig,
|
||
curHeroData.lv + i).Consume
|
||
if costItemListConfig == nil then break end
|
||
for j = 1, #costItemList do
|
||
costItemList[j][1] = costData[j][1]
|
||
costItemList[j][2] = costItemList[j][2] + costItemListConfig[j][2]
|
||
end
|
||
end
|
||
--如果材料不足
|
||
for n = 1, #costItemList do
|
||
if BagManager.GetItemCountById(costItemList[n][1]) < costItemList[n][2] then
|
||
isCanBreach = false
|
||
end
|
||
end
|
||
if isCanBreach == true then
|
||
this.AddLv = m + 1
|
||
break
|
||
end
|
||
end
|
||
|
||
local residualAdvanced = v.LimitLevel - curHeroData.lv --还有几级进阶
|
||
if this.AddLv > residualAdvanced then
|
||
costItemList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
for i = 0, residualAdvanced - 1 do
|
||
local costItemListConfig = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig,
|
||
curHeroData.lv + i).Consume
|
||
if costItemListConfig == nil then break end
|
||
for j = 1, #costItemList do
|
||
costItemList[j][1] = costData[j][1]
|
||
costItemList[j][2] = costItemList[j][2] + costItemListConfig[j][2]
|
||
end
|
||
end
|
||
this.residualUpLv = residualAdvanced
|
||
this.isCanAdvanced = false
|
||
else
|
||
this.residualUpLv = this.AddLv
|
||
end
|
||
--return
|
||
end
|
||
end
|
||
--2升星
|
||
if v.Show == 2 then
|
||
if v.Id ~= curHeroData.upStarId and curHeroData.star == v.LimitStar and curHeroData.star ~= curHeroData.maxStar then
|
||
upStarRankUpConfig = v
|
||
isHeroUpStar = true
|
||
-- return
|
||
end
|
||
if v.Id ~= curHeroData.upStarId and curHeroData.star == v.LimitStar and curHeroData.star ~= curHeroData.maxStar then --and v.OpenLevel-curHeroData.lv~=0 then
|
||
local costData = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig, curHeroData.lv).Consume
|
||
for m = 4, 0, -1 do
|
||
local isOk = true
|
||
costItemList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
for i = 0, m do
|
||
local costItemList1 = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig,
|
||
curHeroData.lv + i).Consume
|
||
if costItemList1 == nil then break end --确认
|
||
for j = 1, #costItemList do
|
||
costItemList[j][1] = costData[j][1]
|
||
costItemList[j][2] = costItemList[j][2] + costItemList1[j][2]
|
||
end
|
||
end
|
||
for n = 1, #costItemList do
|
||
if BagManager.GetItemCountById(costItemList[n][1]) < costItemList[n][2] then
|
||
isOk = false
|
||
end
|
||
end
|
||
if isOk == true then
|
||
this.AddLv = m + 1
|
||
break
|
||
end
|
||
end
|
||
-- this.num = 0
|
||
local index = 30
|
||
if curHeroData.breakId > 0 then
|
||
index = heroRankupConfig[curHeroData.breakId].OpenLevel
|
||
end
|
||
if curHeroData.upStarId > 0 then
|
||
if heroRankupConfig[curHeroData.upStarId].OpenLevel > index then
|
||
index = heroRankupConfig[curHeroData.upStarId].OpenLevel
|
||
end
|
||
end
|
||
local nowMaxLevel = index
|
||
--还有几级升星
|
||
this.upStarNum = nowMaxLevel - curHeroData.lv
|
||
if this.AddLv > this.upStarNum and this.upStarNum ~= 0 then
|
||
costItemList = { { [1] = 0, [2] = 0 }, { [1] = 0, [2] = 0 } }
|
||
for i = 0, this.upStarNum - 1 do
|
||
local costItemList1 = ConfigManager.GetConfigData(ConfigName.HeroLevelConfig,
|
||
curHeroData.lv + i).Consume
|
||
if costItemList1 == nil then break end --确认
|
||
for j = 1, #costItemList do
|
||
costItemList[j][1] = costData[j][1]
|
||
costItemList[j][2] = costItemList[j][2] + costItemList1[j][2]
|
||
end
|
||
end
|
||
this.residualUpLv = this.upStarNum
|
||
this.isCanAdvanced = false
|
||
else
|
||
this.residualUpLv = this.AddLv
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--刷新当前升星坑位英雄的信息
|
||
function this.UpdateUpStarPosHeroData(curSelectHeroList)
|
||
if LengthOfTable(curSelectHeroList) < curSelectUpStarData.upStarData[4] then
|
||
upStarMaterialIsAll[curSelectUpStarData.upStarData[2]] = 2
|
||
this.SetActive(Util.GetGameObject(curSelectUpStarGo.transform, "add"), true)
|
||
local upStarHeroListData = HeroManager.GetUpStarHeroListData(curSelectUpStarData.upStarMaterialsData.Id,
|
||
curHeroData)
|
||
if upStarHeroListData.state <= 0 then
|
||
this.SetActive(Util.GetGameObject(curSelectUpStarGo.transform, "add"), 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
|
||
-- this.SetActive(Util.GetGameObject(curSelectUpStarGo.transform,"add"),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.dynamicId)
|
||
end
|
||
upStarConsumeMaterial[curSelectUpStarData.upStarData[2]] = curUpStarConsumeMaterial
|
||
end
|
||
|
||
--跳转直接到进阶界面
|
||
function this.JumpOnClickBtnUpStar()
|
||
this:OnClickBtnUpStar()
|
||
end
|
||
|
||
------------------------------------------------------升级----------------------------------------------------------
|
||
--升级按钮点击事件处理 --isSingleLvUp 是否单次升级
|
||
function this:LvUpClick(isSingleLvUp)
|
||
if this:IsMaxLevel() then
|
||
curHeroData.lv = HeroMaxLevel
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11846))
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
return
|
||
end
|
||
|
||
--判断是否达到阶级上限
|
||
--当前突破全部完成
|
||
if isHeroUpStar and upStarRankUpConfig and curTuPoRankUpConfig and curTuPoRankUpConfig.JudgeClass == 1 and curHeroData.lv >= curTuPoRankUpConfig.OpenLevel then
|
||
--升星过处理
|
||
if curStarRankUpConfig then
|
||
if curHeroData.lv >= curStarRankUpConfig.OpenLevel then --OpenLevel开放等级
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
MsgPanel.ShowTwo(GetLanguageStrById(11847), nil, function()
|
||
-- this:OnClickBtnCulture()
|
||
-- this:UpdateHeroUpStarProUpShow()
|
||
-- this:OnClickBtnUpStar()
|
||
this.OnClick(btnType.Culture)
|
||
end, GetLanguageStrById(10719), GetLanguageStrById(11848))
|
||
else
|
||
--材料足够
|
||
if isUpLvMaterials then
|
||
--单次升级
|
||
if isSingleLvUp then
|
||
local curUpLv = curHeroData.lv
|
||
if this.isCanAdvanced then
|
||
curUpLv = curHeroData.lv + this.AddLv
|
||
else
|
||
curUpLv = curHeroData.lv + this.residualUpLv
|
||
end
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curUpLv, curHeroData.lv, function(msg)
|
||
self:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
end)
|
||
else
|
||
isTriggerLongClick = true
|
||
self:DeleteLvUpMaterials(isSingleLvUp)
|
||
end
|
||
else
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
if isHeroUpTuPo and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
PopupTipPanel.ShowTipByLanguageId(11849)
|
||
else
|
||
PopupTipPanel.ShowTipByLanguageId(11850)
|
||
end
|
||
end
|
||
end
|
||
else
|
||
--第一次升星处理
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
MsgPanel.ShowTwo(GetLanguageStrById(11847), nil, function()
|
||
-- this:OnClickBtnCulture()
|
||
-- this:UpdateHeroUpStarProUpShow()
|
||
-- this:OnClickBtnUpStar()
|
||
this.OnClick(btnType.Culture)
|
||
end, GetLanguageStrById(10719), GetLanguageStrById(11848))
|
||
end
|
||
else
|
||
if isUpLvMaterials then
|
||
--单次升级
|
||
if isSingleLvUp then
|
||
local curUpLv = curHeroData.lv --初始等级
|
||
if isHeroUpTuPo and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
UIManager.OpenPanel(UIName.RoleRankUpConfirmPopup, curHeroData, upTuPoRankUpConfig,
|
||
upTuPoRankUpConfig.OpenLevel, upTuPoRankUpConfig.ConsumeMaterial, function()
|
||
curUpLv = curHeroData.lv
|
||
if curUpLv > HeroMaxLevel then
|
||
curUpLv = HeroMaxLevel
|
||
end
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curUpLv, curHeroData.lv, function(msg)
|
||
self:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
end)
|
||
end)
|
||
curUpLv = curHeroData.lv
|
||
else
|
||
-- if HeroManager.heroLvEnd[curHeroData.heroConfig.Id] - curHeroData.lv <= 5 then
|
||
-- this.AddLv = HeroManager.heroLvEnd[curHeroData.heroConfig.Id] - curHeroData.lv
|
||
-- end
|
||
|
||
-- LogError(curUpLv)
|
||
if this.isCanAdvanced then
|
||
curUpLv = curHeroData.lv + this.AddLv
|
||
else
|
||
for i, v in ConfigPairs(heroRankupConfig) do
|
||
if v.Star == curHeroData.heroConfig.Star then
|
||
if v.Show == 1 then
|
||
if v.Id ~= curHeroData.breakId and v.LimitLevel - curHeroData.lv <= 5 and curHeroData.lv < v.LimitLevel and v.LimitLevel ~= curHeroData.lv then
|
||
this.residualUpLv = v.LimitLevel - curHeroData.lv
|
||
end
|
||
end
|
||
end
|
||
end
|
||
curUpLv = curHeroData.lv + this.residualUpLv
|
||
end
|
||
if curUpLv > HeroMaxLevel then
|
||
curUpLv = HeroMaxLevel
|
||
end
|
||
-- LogError(tostring(this.isCanAdvanced).." : "..this.AddLv.." : "..curUpLv)
|
||
if curUpLv > this:GetLvEnd() then
|
||
curUpLv = this:GetLvEnd()
|
||
end
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curUpLv, curHeroData.lv, function(msg)
|
||
self:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
end)
|
||
end
|
||
else
|
||
if curHeroData.lv <= this:GetLvEnd() then
|
||
isTriggerLongClick = true
|
||
self:DeleteLvUpMaterials(isSingleLvUp)
|
||
end
|
||
end
|
||
else
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
if isHeroUpTuPo and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
PopupTipPanel.ShowTipByLanguageId(11849)
|
||
else
|
||
PopupTipPanel.ShowTipByLanguageId(11850)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function RoleInfoPanel:LvUpClickOne(isSingleLvUp)
|
||
--是否为最大等级
|
||
if curHeroData.lv >= HeroManager.heroLvEnd[curHeroData.heroConfig.Id] then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11846))
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
return
|
||
end
|
||
|
||
-- 突破新增加条件
|
||
-- local heroRankUpConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
|
||
--突破等级
|
||
-- local breaklevel
|
||
-- local iscompletely = false
|
||
-- if heroRankUpConfig[curHeroData.breakId] then
|
||
-- breaklevel = heroRankUpConfig[curHeroData.breakId].Phase[2]
|
||
-- else
|
||
-- breaklevel = 0
|
||
-- end
|
||
-- if (curHeroData.star == 5 and breaklevel == 5) or breaklevel == 6 or curHeroData.star <= 4 then
|
||
-- iscompletely = true
|
||
-- end
|
||
--判断是否达到阶级上限
|
||
if isUpLvMaterials then
|
||
if isSingleLvUp then --是否是单次升级
|
||
local curUpLv = curHeroData.lv
|
||
if isHeroUpTuPo and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
UIManager.OpenPanel(UIName.RoleRankUpConfirmPopup, curHeroData, upTuPoRankUpConfig,
|
||
upTuPoRankUpConfig.OpenLevel, upTuPoRankUpConfig.ConsumeMaterial, function()
|
||
curUpLv = curHeroData.lv
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curUpLv, curHeroData.lv, function(msg)
|
||
self:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
end)
|
||
end)
|
||
curUpLv = curHeroData.lv
|
||
else
|
||
curUpLv = curHeroData.lv + 1
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curUpLv, curHeroData.lv, function(msg)
|
||
self:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
end)
|
||
end
|
||
else
|
||
isTriggerLongClick = true
|
||
self:DeleteLvUpMaterials(isSingleLvUp)
|
||
end
|
||
else
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
if isHeroUpTuPo and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11849))
|
||
else
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11850))
|
||
end
|
||
end
|
||
end
|
||
|
||
--长按升级结束后请求协议
|
||
function this:LongLvUpClick(oldLv)
|
||
NetManager.HeroLvUpEvent(curHeroData.dynamicId, curHeroData.lv, oldLv, function(msg)
|
||
self:DeleteLvUpMaterials2(msg)
|
||
end)
|
||
end
|
||
|
||
--升星按钮点击事件处理
|
||
function this:StarUpClick()
|
||
if curHeroData.lv >= HeroManager.heroLvEnd[curHeroData.heroConfig.Id] then
|
||
return
|
||
end
|
||
if curHeroData.lv < upStarRankUpConfig.LimitLevel then
|
||
PopupTipPanel.ShowTip(GetLanguageStrById(11851) .. 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.RoleUpStarSuccessPanel, curHeroData, upStarRankUpConfig.Id,
|
||
upStarRankUpConfig.OpenLevel, function()
|
||
local dropItemTabs = BagManager.GetTableByBackDropData(msg)
|
||
if #dropItemTabs > 0 then
|
||
UIManager.OpenPanel(UIName.RewardItemPopup, msg, 1, function()
|
||
self:DeleteUpStarMaterials()
|
||
self:UpdateHeroUpStarProUpShow()
|
||
end)
|
||
else
|
||
self:DeleteUpStarMaterials()
|
||
self:UpdateHeroUpStarProUpShow()
|
||
end
|
||
end)
|
||
end)
|
||
-- 进阶音效
|
||
PlaySoundWithoutClick(SoundConfig.Sound_Recruit3)
|
||
|
||
CombatPlanManager.RequestAllPlanData(function() end)
|
||
else
|
||
PopupTipPanel.ShowTipByLanguageId(11852)
|
||
end
|
||
end
|
||
|
||
--扣除升级 突破 消耗的材料 更新英雄数据
|
||
function this:DeleteLvUpMaterials(isSingleLvUp, msg)
|
||
--连续升级的时候需要自己先扣除
|
||
if isSingleLvUp == false then
|
||
for i = 1, #costItemList do
|
||
BagManager.HeroLvUpUpdateItemsNum(costItemList[i][1], costItemList[i][2])
|
||
end
|
||
end
|
||
for i, v in pairs(heroDatas) do
|
||
if curHeroData == v then
|
||
if isHeroUpTuPo and upTuPoRankUpConfig and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
UIManager.OpenPanel(UIName.RoleUpLvBreakSuccessPanel, curHeroData, upTuPoRankUpConfig.Id,
|
||
upTuPoRankUpConfig.OpenLevel)
|
||
curHeroData.breakId = upTuPoRankUpConfig.Id
|
||
v.breakId = curHeroData.breakId
|
||
--突破有可能会升星
|
||
if curHeroData.star < upTuPoRankUpConfig.OpenStar then
|
||
curHeroData.star = upTuPoRankUpConfig.OpenStar
|
||
v.star = curHeroData.star
|
||
end
|
||
_isClicked = false
|
||
_isReqLvUp = false
|
||
else
|
||
if msg then
|
||
curHeroData.lv = msg.targetLevel
|
||
else
|
||
curHeroData.lv = curHeroData.lv + 1
|
||
end
|
||
v.lv = curHeroData.lv
|
||
end
|
||
end
|
||
end
|
||
--刷新英雄库里单个英雄数据
|
||
if isHeroUpTuPo and upTuPoRankUpConfig and curHeroData.lv == upTuPoRankUpConfig.LimitLevel then
|
||
-- 突破音效
|
||
PlaySoundWithoutClick(SoundConfig.Sound_Breach)
|
||
else
|
||
-- 升级音效
|
||
PlaySoundWithoutClick(SoundConfig.Sound_Upgrade)
|
||
end
|
||
HeroManager.UpdateSingleHeroDatas(curHeroData.dynamicId, curHeroData.lv, curHeroData.star, curHeroData.breakId,
|
||
curHeroData.upStarId, isSingleLvUp)
|
||
local allAddProValOld = allAddProVal
|
||
this.ShowProAddVal(allAddProValOld)
|
||
this:UpdatePanelData() --刷新界面
|
||
|
||
_isReqLvUp = false
|
||
end
|
||
|
||
--连续升级更新后端英雄数据
|
||
function this:DeleteLvUpMaterials2(msg)
|
||
for i, v in pairs(heroDatas) do
|
||
if curHeroData == v then
|
||
if msg then
|
||
curHeroData.lv = msg.targetLevel
|
||
end
|
||
v.lv = curHeroData.lv
|
||
end
|
||
end
|
||
HeroManager.UpdateSingleHeroDatas(curHeroData.dynamicId, curHeroData.lv, curHeroData.star, curHeroData.breakId,
|
||
curHeroData.upStarId, true)
|
||
this:UpdatePanelData() --刷新界面
|
||
end
|
||
|
||
--扣除升星 消耗的材料 更新英雄数据
|
||
function this:DeleteUpStarMaterials()
|
||
HeroManager.UpdateSingleHeroDatas(curHeroData.dynamicId, curHeroData.lv, curHeroData.star + 1, curHeroData.breakId,
|
||
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
|
||
--本地数据删除材料英雄
|
||
for i = 1, #upStarConsumeMaterial do
|
||
HeroManager.DeleteHeroDatas(upStarConsumeMaterial[i])
|
||
end
|
||
if HeroManager.heroListPanelProID ~= ProIdConst.All then
|
||
heroDatas = HeroManager.GetHeroDataByProperty(HeroManager.heroListPanelProID)
|
||
else
|
||
heroDatas = HeroManager.GetAllHeroDatas()
|
||
end
|
||
if UIManager.IsOpen(UIName.RoleInfoPanel) then --当界面存在时需要刷新当前界面
|
||
this:SortHeroDatas(heroDatas)
|
||
|
||
if this.leftLiveObj and leftHeroData then
|
||
UnLoadHerolive(leftHeroData.heroConfig, this.leftLiveObj)
|
||
this.leftLiveObj = nil
|
||
end
|
||
if this.rightLiveObj and rightHeroData then
|
||
UnLoadHerolive(rightHeroData.heroConfig, this.rightLiveObj)
|
||
this.rightLiveObj = nil
|
||
end
|
||
if this.curLiveObj and curHeroData then
|
||
UnLoadHerolive(curHeroData.heroConfig, this.curLiveObj)
|
||
this.curLiveObj = nil
|
||
end
|
||
Util.ClearChild(this.curObj.transform)
|
||
Util.ClearChild(this.leftObj.transform)
|
||
Util.ClearChild(this.rightObj.transform)
|
||
|
||
for i = 1, #heroDatas do
|
||
if curHeroData == heroDatas[i] then
|
||
index = i
|
||
end
|
||
end
|
||
this:UpdateLiveList()
|
||
|
||
this.leftLiveObj = LoadHerolive(leftHeroData.heroConfig, this.leftObj)
|
||
this.rightLiveObj = LoadHerolive(rightHeroData.heroConfig, this.rightObj)
|
||
this.curLiveObj = LoadHerolive(curHeroData.heroConfig, this.curObj)
|
||
|
||
self.dragView:SetDragGO(this.curLiveObj)
|
||
this:UpdatePanelData()
|
||
end
|
||
end
|
||
|
||
--排序
|
||
function this:SortHeroDatas(_heroDatas)
|
||
--上阵最优先,星级优先,同星级等级优先,同星级同等级按sortId排序。排序时降序排序。
|
||
table.sort(_heroDatas, function(a, b)
|
||
if (teamHero[a.dynamicId] and teamHero[b.dynamicId]) or
|
||
(not teamHero[a.dynamicId] and not teamHero[b.dynamicId])
|
||
then
|
||
if a.heroConfig.Natural == b.heroConfig.Natural then
|
||
if a.star == b.star then
|
||
if a.lv == b.lv then
|
||
return a.heroConfig.Id < b.heroConfig.Id
|
||
else
|
||
return a.lv > b.lv
|
||
end
|
||
else
|
||
return a.star > b.star
|
||
end
|
||
else
|
||
return a.heroConfig.Natural > b.heroConfig.Natural
|
||
end
|
||
else
|
||
return teamHero[a.dynamicId] and not teamHero[b.dynamicId]
|
||
end
|
||
end)
|
||
end
|
||
|
||
--播放升级 属性提升动画
|
||
function this.ShowProAddVal(allAddProValOld)
|
||
this.ThreadShowProAddVal()
|
||
end
|
||
|
||
function this.ThreadShowProAddVal()
|
||
if this.priThread then
|
||
coroutine.stop(this.priThread)
|
||
this.priThread = nil
|
||
end
|
||
table.walk(lvUpShowProList, function(privilegeItem)
|
||
this.SetActive(privilegeItem, false)
|
||
end)
|
||
this.priThread = coroutine.start(function()
|
||
for i = 1, 4 do
|
||
-- lvUpShowProList[i]:SetActive(false)
|
||
-- PlayUIAnims(lvUpShowProList[i])
|
||
-- coroutine.wait(0.04)
|
||
-- lvUpShowProList[i]:SetActive(true)
|
||
-- coroutine.wait(0.08)
|
||
end
|
||
-- this.lvUpGo:SetActive(false)
|
||
end)
|
||
end
|
||
|
||
--跳转显示新手提示圈 --1 升级突破 2 进阶
|
||
function this.ShowGuideGo(type)
|
||
if type == 1 then
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.upLvBtn)
|
||
elseif type == 2 then
|
||
--local btn = Util.GetGameObject(this.upStarGrid.transform, "upStarPre3")
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.upClassBtn)
|
||
|
||
-- 我要变强跳转过来显示小手
|
||
elseif type == -1 then
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.upLvBtn)
|
||
elseif type == -2 then
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.equipBtn)
|
||
elseif type == -3 then
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.soulPrintBtn)
|
||
elseif type == -4 then
|
||
JumpManager.ShowGuide(UIName.RoleInfoPanel, this.talismanClick)
|
||
end
|
||
end
|
||
|
||
------------------------------------------------------装备----------------------------------------------------------
|
||
--展示英雄装备
|
||
function this.ShowHeroEquip()
|
||
this.RefreshPlanSlot()
|
||
this.RefreshNewEquipState()
|
||
--装备的数据
|
||
curHeroEquipDatas = {}
|
||
for i = 1, #curHeroData.equipIdList do
|
||
local equipData = EquipManager.GetSingleHeroSingleEquipData(curHeroData.equipIdList[i], curHeroData.dynamicId)
|
||
if equipData ~= nil then
|
||
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
|
||
end
|
||
end
|
||
|
||
--戒指
|
||
curPlanDatas = {}
|
||
for i = 1, #curHeroData.planList do
|
||
local sData = curHeroData.planList[i]
|
||
local bData = CombatPlanManager.GetPlanData(sData.planId)
|
||
|
||
curPlanDatas[sData.position + 4] = { sData = sData, bData = bData }
|
||
end
|
||
|
||
for i = 1, this.equipInfo.transform.childCount do
|
||
local go = this.equipInfo.transform:GetChild(i - 1).gameObject
|
||
local effect = Util.GetGameObject(go, "effect")
|
||
-- local frame = Util.GetGameObject(go, "frame"):GetComponent("Image")
|
||
local mask = Util.GetGameObject(go, "mask")
|
||
local item = Util.GetGameObject(go, "item"):GetComponent("Image")
|
||
local icon = Util.GetGameObject(go, "item/icon"):GetComponent("Image")
|
||
local pro = Util.GetGameObject(go, "item/pro")
|
||
local addLv = Util.GetGameObject(go, "AddLv"):GetComponent("Image")
|
||
|
||
if i <= 4 then
|
||
Util.GetGameObject(go, "link"):SetActive(isLink)
|
||
end
|
||
--装备铸神
|
||
local nowAddLevel = this.ShowAddLevel(i)
|
||
if nowAddLevel > 0 then
|
||
addLv.gameObject:SetActive(true)
|
||
addLv.sprite = Util.LoadSprite(SpriteName .. nowAddLevel)
|
||
else
|
||
addLv.gameObject:SetActive(false)
|
||
end
|
||
|
||
effectList[i] = effect
|
||
if curHeroEquipDatas[i] then
|
||
this.SetActive(item.gameObject, true)
|
||
this.SetActive(pro, false)
|
||
icon.sprite = Util.LoadSprite(curHeroEquipDatas[i].icon)
|
||
item.sprite = Util.LoadSprite(curHeroEquipDatas[i].frame)
|
||
|
||
EquipManager.SetEquipStarShow(
|
||
Util.GetGameObject(go.transform, "item/star"),
|
||
curHeroEquipDatas[i].itemConfig.Id
|
||
)
|
||
this.equip[i]:GetComponent("Button").enabled = false
|
||
elseif curPlanDatas[i] then
|
||
this.SetActive(item.gameObject, true)
|
||
this.SetActive(mask, false)
|
||
this.SetActive(pro, false)
|
||
local config = G_CombatPlanConfig[curPlanDatas[i].bData.combatPlanId]
|
||
if config.Quality ~= 6 then
|
||
item.sprite = Util.LoadSprite(GetQuantityImageByquality(config.Quality + 1))
|
||
else
|
||
item.sprite = Util.LoadSprite(GetQuantityImageByquality(config.Quality))
|
||
end
|
||
icon.sprite = Util.LoadSprite(config.Icon)
|
||
elseif totemItem[i] then
|
||
-- frame.gameObject:SetActive(true)
|
||
this.SetActive(mask, false)
|
||
local itemData = TotemManager.GetOneTotemData(TotemManager.GetTotemIdById(totemItem[i]))
|
||
icon.sprite = Util.LoadSprite(itemData.icon)
|
||
item.sprite = Util.LoadSprite(GetQuantityImageByqualityHexagon(itemData.Totemconfig.Color))
|
||
else
|
||
this.SetActive(item.gameObject, false)
|
||
-- this.SetActive(frame.gameObject, false)
|
||
this.SetActive(mask, true)
|
||
|
||
if Util.GetGameObject(go, "num") then
|
||
this.SetActive(Util.GetGameObject(go, "num").gameObject, false)
|
||
end
|
||
|
||
this.equip[i]:GetComponent("Button").enabled = true
|
||
end
|
||
Util.AddOnceClick(icon.gameObject, function()
|
||
-- LogError(i.." "..tostring(isLink))
|
||
if i <= 4 and isLink then
|
||
return
|
||
end
|
||
if curHeroEquipDatas[i] then
|
||
curSelectEquipData = curHeroEquipDatas[i]
|
||
UIManager.OpenPanel(UIName.RoleEquipChangePopup, this, 1, curHeroData, curHeroEquipDatas[i], i)
|
||
elseif curPlanDatas[i] then
|
||
UIManager.OpenPanel(UIName.CombatPlanTipsPopup, 1, this, curPlanDatas[i], curHeroData)
|
||
elseif totemItem[i] then
|
||
UIManager.OpenPanel(UIName.ToTemUpLvPopup, curHeroData.totemId, curHeroData)
|
||
end
|
||
end)
|
||
end
|
||
--红点
|
||
local isHaveBatter, isHave, isNull = this:CheckEquipHaveWear()
|
||
local hasBetterRings, betterRingsState = HeroManager.GetRingsIsShowRedPoint(curHeroData)
|
||
-- local limit = string.split(SpecialConfig[157].Value, "#")
|
||
-- LogError(tostring(betterRingsState ~= nil).." "..tostring(isHaveBatter).." "..tostring(isHave).." "..tostring(isNull))
|
||
if betterRingsState ~= nil then
|
||
if isHaveBatter or isHaveBatter or isHave then
|
||
this.SetActive(this.EquipAllRedPoint, not isLink)
|
||
this.SetActive(this.btnEquipRedPoint, not isLink)
|
||
elseif betterRingsState["Rings1"] or betterRingsState["Rings2"] then
|
||
this.SetActive(this.btnEquipRedPoint, not isLink)
|
||
if isHaveBatter == false then
|
||
this.SetActive(this.EquipAllRedPoint, false)
|
||
end
|
||
elseif not betterRingsState["Rings1"] and not betterRingsState["Rings2"] then
|
||
this.SetActive(this.btnEquipRedPoint, false)
|
||
this.SetActive(this.EquipAllRedPoint, false)
|
||
else
|
||
this.SetActive(this.EquipAllRedPoint, false)
|
||
this.SetActive(this.btnEquipRedPoint, false)
|
||
end
|
||
elseif isHaveBatter then
|
||
this.SetActive(this.btnEquipRedPoint, not isLink)
|
||
else
|
||
this.SetActive(this.btnEquipRedPoint, false)
|
||
end
|
||
if isHaveBatter then
|
||
this.EquipAll:GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont(
|
||
"X1_yingxiongxiangqing_kuaisuzhuangbei"))
|
||
this.EquipAll:GetComponent("RectTransform").sizeDelta = Vector2.New(660, 253)
|
||
Util.AddOnceClick(this.EquipAll, function() this:AllEquipUp() end)
|
||
else
|
||
if isHave then
|
||
this.EquipAll:GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont(
|
||
"X1_yingxiongxiangqing_kuaisuzhuangbei"))
|
||
this.EquipAll:GetComponent("RectTransform").sizeDelta = Vector2.New(660, 253)
|
||
Util.AddOnceClick(this.EquipAll, function() this:AllEquipDown() end)
|
||
else
|
||
if isNull then
|
||
this.EquipAll:GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont(
|
||
"X1_yingxiongxiangqing_yijianxiexia"))
|
||
this.EquipAll:GetComponent("RectTransform").sizeDelta = Vector2.New(332, 124)
|
||
Util.AddOnceClick(this.EquipAll, function() this:AllEquipDown() end)
|
||
else
|
||
this.EquipAll:GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont(
|
||
"X1_yingxiongxiangqing_kuaisuzhuangbei"))
|
||
this.EquipAll:GetComponent("RectTransform").sizeDelta = Vector2.New(660, 253)
|
||
Util.AddOnceClick(this.EquipAll, function() PopupTipPanel.ShowTipByLanguageId(23122) end)
|
||
end
|
||
end
|
||
end
|
||
this.SetActive(this.EquipAll, not isLink)
|
||
this:RefreshEquipRedPoint()
|
||
end
|
||
|
||
-- 刷新戒指栏位
|
||
function this.RefreshPlanSlot()
|
||
for i = 5, 6 do
|
||
local equip = Util.GetGameObject(this.gameObject, "roleEquipLayout/equipInfo/equip" .. i)
|
||
local lock = Util.GetGameObject(equip, "lock")
|
||
local text = Util.GetGameObject(equip, "text"):GetComponent("Text")
|
||
local mask = Util.GetGameObject(equip, "mask")
|
||
local add = Util.GetGameObject(equip, "add")
|
||
|
||
local isOpen, txt = this:checkUnlockCombatPlan(i - 4)
|
||
if not isOpen then
|
||
text.text = txt
|
||
this.SetActive(lock, true)
|
||
this.SetActive(mask, false)
|
||
this.SetActive(add, false)
|
||
else
|
||
text.text = ""
|
||
this.SetActive(lock, false)
|
||
end
|
||
end
|
||
end
|
||
|
||
function this.RefreshNewEquipState()
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
for i = 7, 8 do
|
||
local equip = Util.GetGameObject(this.gameObject, "roleEquipLayout/equipInfo/equip" .. i)
|
||
local mask = Util.GetGameObject(equip, "mask")
|
||
local lock = Util.GetGameObject(equip, "lock")
|
||
local add = Util.GetGameObject(equip, "add")
|
||
-- local text = Util.GetGameObject(equip, "text"):GetComponent("Text")
|
||
|
||
if curHeroData.star >= tonumber(limit[i - 6]) then
|
||
this.SetActive(equip, true)
|
||
-- text.text = ""
|
||
add:SetActive(true)
|
||
lock:SetActive(false)
|
||
mask:SetActive(true)
|
||
else
|
||
this.SetActive(equip, false)
|
||
-- text.text = tonumber(limit[i-6])..GetLanguageStrById(10488)
|
||
-- add:SetActive(false)
|
||
-- lock:SetActive(true)
|
||
-- mask:SetActive(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
function this:UpdateHeroEquipCastGod()
|
||
local isLock = this:checkUnlockEquipCastGod()
|
||
this.castGodBtn:SetActive(isLock and not isLink)
|
||
end
|
||
|
||
--刷新当前英雄装备坑位的信息 _equipOrTreasure 1装备 2宝物 3作战方案 默认更新装备铸神
|
||
function this.UpdateEquipPosHeroData(_equipOrTreasure, _type, _selectEquipDataList, _oldSelectEquip, position)
|
||
--type 1.穿单件装备 2.卸单件装备 3.替换单件装备 4.一键穿装备 5.一键脱装备
|
||
if _type == 1 then
|
||
this.SetActive(effectList[position], false)
|
||
this.SetActive(effectList[position], true)
|
||
if _equipOrTreasure == 1 then
|
||
curSelectEquipData = _selectEquipDataList[1]
|
||
--装备绑英雄
|
||
EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId)
|
||
--英雄加装备
|
||
table.insert(curHeroData.equipIdList, curSelectEquipData.id)
|
||
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
|
||
elseif _equipOrTreasure == 2 then
|
||
curEquipTreasureDatas = _selectEquipDataList[1]
|
||
--装备绑英雄
|
||
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, curHeroData.dynamicId)
|
||
--英雄加装备
|
||
table.insert(curHeroData.jewels, curEquipTreasureDatas.idDyn)
|
||
elseif _equipOrTreasure == 3 then
|
||
--英雄绑plan
|
||
--_selectEquipDataList 传入值 为直接Did 目前逻辑满足不了一键
|
||
local planDid = _selectEquipDataList
|
||
local oldPlanList = {}
|
||
for i = 1, #curHeroData.planList do
|
||
table.insert(oldPlanList, curHeroData.planList[i])
|
||
end
|
||
table.insert(oldPlanList, { planId = planDid, position = position - 4 }) --< 后端的第三个参数confPlanId不用
|
||
curHeroData.planList = oldPlanList
|
||
-- plan+英雄id
|
||
CombatPlanManager.UpPlanData(curHeroData.dynamicId, planDid)
|
||
end
|
||
elseif _type == 2 then
|
||
if _equipOrTreasure == 1 then
|
||
--装备解绑英雄
|
||
curSelectEquipData = _selectEquipDataList[1]
|
||
EquipManager.DeleteSingleEquip(curSelectEquipData.id, curHeroData.dynamicId)
|
||
for i = 1, #curHeroData.equipIdList do
|
||
if tonumber(curHeroData.equipIdList[i]) == tonumber(curSelectEquipData.id) then
|
||
--英雄删除装备
|
||
table.remove(curHeroData.equipIdList, i)
|
||
break
|
||
end
|
||
end
|
||
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
|
||
elseif _equipOrTreasure == 2 then
|
||
curEquipTreasureDatas = _selectEquipDataList[1]
|
||
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, "")
|
||
for i = 1, #curHeroData.jewels do
|
||
if curHeroData.jewels[i] == curEquipTreasureDatas.idDyn then
|
||
--英雄删除装备
|
||
table.remove(curHeroData.jewels, i)
|
||
break
|
||
end
|
||
end
|
||
elseif _equipOrTreasure == 3 then
|
||
local planDid = _selectEquipDataList
|
||
for i = 1, #curHeroData.planList do
|
||
if curHeroData.planList[i].planId == planDid then
|
||
table.remove(curHeroData.planList, i)
|
||
break
|
||
end
|
||
end
|
||
CombatPlanManager.DownPlanData(curHeroData.dynamicId, planDid)
|
||
end
|
||
elseif _type == 3 then
|
||
this.SetActive(effectList[position], false)
|
||
this.SetActive(effectList[position], true)
|
||
if _equipOrTreasure == 1 then
|
||
curSelectEquipData = _selectEquipDataList[1]
|
||
EquipManager.SetEquipUpHeroDid(curSelectEquipData.id, curHeroData.dynamicId)
|
||
--穿
|
||
if _oldSelectEquip and tonumber(_oldSelectEquip.id) ~= tonumber(curSelectEquipData.id) then
|
||
EquipManager.DeleteSingleEquip(_oldSelectEquip.id, curHeroData.dynamicId)
|
||
end
|
||
--英雄替换新选择装备
|
||
if curHeroEquipDatas[position] then
|
||
for i = 1, #curHeroData.equipIdList do
|
||
if
|
||
tonumber(curHeroData.equipIdList[i]) ==
|
||
tonumber(curHeroEquipDatas[position].id)
|
||
then
|
||
curHeroData.equipIdList[i] = curSelectEquipData.id
|
||
break
|
||
end
|
||
end
|
||
end
|
||
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, curHeroData.equipIdList)
|
||
elseif _equipOrTreasure == 2 then
|
||
curEquipTreasureDatas = _selectEquipDataList[1]
|
||
--新装备绑英雄
|
||
EquipTreasureManager.SetEquipTreasureUpHeroDid(curEquipTreasureDatas.idDyn, curHeroData.dynamicId)
|
||
if _oldSelectEquip then
|
||
--被替换装备解绑英雄
|
||
EquipTreasureManager.SetEquipTreasureUpHeroDid(_oldSelectEquip.idDyn, "")
|
||
end
|
||
--英雄替换新选择装备
|
||
for i = 1, #curHeroData.jewels do
|
||
if curHeroData.jewels[i] == _oldSelectEquip.idDyn then
|
||
curHeroData.jewels[i] = curEquipTreasureDatas.idDyn
|
||
end
|
||
end
|
||
elseif _equipOrTreasure == 3 then
|
||
local newPlanDid = _selectEquipDataList
|
||
local oldPlanDid = _oldSelectEquip
|
||
CombatPlanManager.UpPlanData(curHeroData.dynamicId, newPlanDid)
|
||
CombatPlanManager.DownPlanData(curHeroData.dynamicId, oldPlanDid)
|
||
|
||
for i = 1, #curHeroData.planList do
|
||
if curHeroData.planList[i].planId == oldPlanDid then
|
||
curHeroData.planList[i].planId = newPlanDid
|
||
break
|
||
end
|
||
end
|
||
end
|
||
elseif _type == 4 then
|
||
--一键穿 把身上装备解绑英雄id
|
||
if _equipOrTreasure == 1 then
|
||
--宝物
|
||
for n, m in ipairs(_selectEquipDataList) do
|
||
local isadd = true
|
||
for i = 1, #curHeroData.equipIdList do
|
||
if equipConfig[tonumber(curHeroData.equipIdList[i])].Position == equipConfig[tonumber(m)].Position then
|
||
EquipManager.DeleteSingleEquip(curHeroData.equipIdList[i], curHeroData.dynamicId)
|
||
curHeroData.equipIdList[i] = m
|
||
HeroManager.GetHeroEquipIdList1(curHeroData.dynamicId, m)
|
||
isadd = false
|
||
break
|
||
end
|
||
end
|
||
if isadd then
|
||
table.insert(curHeroData.equipIdList, m)
|
||
end
|
||
end
|
||
EquipManager.UpdateEquipData(_selectEquipDataList, curHeroData.dynamicId)
|
||
elseif _equipOrTreasure == 4 then
|
||
for k, v in ipairs(curHeroData.jewels) do
|
||
EquipTreasureManager.SetTreasureUpOrDown(v, "0")
|
||
end
|
||
curHeroData.jewels = {}
|
||
for i = 1, #_selectEquipDataList do
|
||
--把选择的装备绑上英雄
|
||
EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], curHeroData.dynamicId)
|
||
--穿
|
||
--再把英雄装备list 清空并添加上新选择的装备
|
||
table.insert(curHeroData.jewels, _selectEquipDataList[i])
|
||
end
|
||
end
|
||
elseif _type == 5 then
|
||
--一键脱 把身上装备英雄id置为“0” 再把英雄装备list清空
|
||
if _equipOrTreasure == 1 then
|
||
if _selectEquipDataList then
|
||
for i = 1, #_selectEquipDataList do
|
||
EquipManager.DeleteSingleEquip(_selectEquipDataList[i], curHeroData.dynamicId)
|
||
end
|
||
end
|
||
curHeroData.equipIdList = {}
|
||
HeroManager.SetHeroEquipIdList(curHeroData.dynamicId, {})
|
||
curHeroData.equipIdList = {}
|
||
elseif _equipOrTreasure == 5 then
|
||
if _selectEquipDataList then
|
||
for i = 1, #_selectEquipDataList do
|
||
EquipTreasureManager.SetTreasureUpOrDown(_selectEquipDataList[i], "")
|
||
end
|
||
curHeroData.jewels = {}
|
||
end
|
||
end
|
||
end
|
||
--刷新部件数据
|
||
HeroManager.UpdateHeroPartsData(curHeroData)
|
||
-- 刷新界面
|
||
-- this.ShowHeroEquip()
|
||
--更新界面
|
||
this:UpdatePanelData()
|
||
--对比战力并更新战力值 播放战力变更动画
|
||
HeroManager.CompareWarPower(curHeroData.dynamicId)
|
||
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.Parts.FreshEquip)
|
||
end
|
||
|
||
--检测装备是否有提升
|
||
function this:CheckEquipHaveWear()
|
||
-- local allEquipIds = {}
|
||
|
||
--计算英雄身上的所有装备位的装备
|
||
local curHeroEquipDatas = {}
|
||
for k, v in ipairs(curHeroData.equipIdList) do
|
||
local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId)
|
||
if equipData ~= nil then
|
||
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
|
||
else
|
||
|
||
end
|
||
end
|
||
-- local isHaveSlot = false
|
||
local isCanWear = false
|
||
local isNull = false
|
||
if this:IsEquipUp() then
|
||
return true
|
||
end
|
||
for i = 1, 8 do
|
||
if curHeroEquipDatas[i] == nil then --槽位为空或者有更好装备时
|
||
local curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i)
|
||
if curPosEquip and #curPosEquip > 0 then
|
||
if i == 7 or i == 8 then
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
if curHeroData.star >= tonumber(limit[i - 6]) then
|
||
isCanWear = true
|
||
return true
|
||
end
|
||
else
|
||
isCanWear = true
|
||
return true
|
||
end
|
||
end
|
||
else
|
||
isNull = true
|
||
end
|
||
end
|
||
----------------------------------------------戒指红点start------------------
|
||
--红点显示的条件
|
||
-- 1.解锁了但是没有装备
|
||
-- 2.有更好的戒指
|
||
--首先看玩家有没有解锁戒指,然后判断当前装备的戒指有没有更好的替代品
|
||
--如果没解锁红点显示,有更好的替代品也显示红点
|
||
|
||
--查看两个戒指的解锁状态
|
||
-- local rings1IsUnlock=false
|
||
-- local rings2IsUnlock=false
|
||
-- for i=1,2 do
|
||
-- local s_type = 0
|
||
-- local s_value = 0
|
||
-- local specialConfig = ConfigManager.GetConfigDataByKey(ConfigName.SpecialConfig, "Key", "CombatPlanUnlock")
|
||
-- local valueArray = string.split(specialConfig.Value, "|")
|
||
-- local a = string.split(valueArray[i], "#")
|
||
-- s_type = a[2]
|
||
-- s_value = a[3]
|
||
-- if tonumber(s_type) == 1 then
|
||
-- rings1IsUnlock= curHeroData.lv >= tonumber(s_value)
|
||
-- elseif tonumber(s_type) == 2 then
|
||
-- rings2IsUnlock=curHeroData.star >= tonumber(s_value)
|
||
-- end
|
||
-- end
|
||
|
||
|
||
|
||
-- --初始化获得背包所有的戒指,索引从5开始,因为装备是1234,方便区别
|
||
-- curRingsData = {}
|
||
-- for i = 1, #curHeroData.planList do
|
||
-- local sData = curHeroData.planList[i]
|
||
-- local bData = CombatPlanManager.GetPlanData(sData.planId)
|
||
-- curRingsData[sData.position+4] = {sData = sData, bData = bData}
|
||
-- end
|
||
|
||
-- --获取所有的没装备的戒指并且比较有没有更好的
|
||
-- local hasBetterRings=fasle
|
||
-- local allRingsData = CombatPlanManager.GetPlanByType(2)
|
||
-- for i = 1, #allRingsData do
|
||
-- local oneRingsData = CombatPlanManager.CalPlanPowerByProperty(allRingsData[i].property)
|
||
-- if curRingsData[5] == nil or curRingsData[6] == nil then
|
||
-- hasBetterRings = true
|
||
-- else
|
||
-- if
|
||
-- oneRingsData > CombatPlanManager.CalPlanPowerByProperty(curRingsData[5].bData.property) or
|
||
-- oneRingsData > CombatPlanManager.CalPlanPowerByProperty(curRingsData[6].bData.property)
|
||
-- then
|
||
-- hasBetterRings = true
|
||
-- end
|
||
-- end
|
||
|
||
-- --背包全部装备的评价
|
||
-- Log('全部未装备戒指的评价:' .. CombatPlanManager.CalPlanPowerByProperty(allRingsData[i].property))
|
||
-- end
|
||
|
||
|
||
-- --获取当前穿戴戒指的评分
|
||
-- if curRingsData[5] ~= nil then
|
||
-- Log("1号戒指的评价是:".. CombatPlanManager.CalPlanPowerByProperty(curRingsData[5].bData.property))
|
||
-- end
|
||
-- if curRingsData[6] ~= nil then
|
||
-- Log("2号戒指的评价是:".. CombatPlanManager.CalPlanPowerByProperty(curRingsData[6].bData.property))
|
||
-- end
|
||
|
||
-- if not rings1IsUnlock and not rings1IsUnlock then
|
||
-- Log("戒指没解锁")
|
||
-- else
|
||
-- if rings1IsUnlock and rings2IsUnlock and (curRingsData[5]==nil or curRingsData[6]==nil) and #curHeroData.planList>0 then
|
||
-- Log("戒指都解锁了,背包有戒指,但是没装备任何戒指")
|
||
-- elseif hasBetterRings then
|
||
-- Log("有更好的戒指")
|
||
-- end
|
||
-- end
|
||
-- HeroManager.GetRingsIsShowRedPoint(curHeroData)
|
||
|
||
-------------------------------------------------戒指红点end---
|
||
|
||
return false, isCanWear, isNull
|
||
end
|
||
|
||
--装备是否有提升
|
||
function this:IsEquipUp()
|
||
--计算英雄身上的所有装备位的装备
|
||
local curHeroEquipDatas = {}
|
||
for k, v in ipairs(curHeroData.equipIdList) do
|
||
local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId)
|
||
if equipData ~= nil then
|
||
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
|
||
else
|
||
|
||
end
|
||
end
|
||
|
||
for i = 1, 8 do
|
||
local curPosEquip = {}
|
||
if i == 5 or i == 6 then
|
||
else
|
||
curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i)
|
||
|
||
--计算每个位置可装备的装备战力 取战力最大的装备
|
||
if curPosEquip and #curPosEquip > 0 then
|
||
local equiData = {}
|
||
local indexMaxPower = 0
|
||
if curHeroEquipDatas[i] then
|
||
equiData = curHeroEquipDatas[i]
|
||
indexMaxPower = EquipManager.CalculateWarForce(curHeroEquipDatas[i].id)
|
||
end
|
||
for k = 1, #curPosEquip do
|
||
local addPower = 0
|
||
local curEquip = curPosEquip[k]
|
||
if curEquip then
|
||
addPower = EquipManager.CalculateWarForce(curEquip.id)
|
||
end
|
||
if addPower > indexMaxPower then
|
||
if i == 7 or i == 8 then
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
if curHeroData.star >= tonumber(limit[i - 6]) then
|
||
return true
|
||
end
|
||
else
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--刷新装备红点
|
||
function this:RefreshEquipRedPoint()
|
||
local curHeroEquipDatas = {}
|
||
for k, v in ipairs(curHeroData.equipIdList) do
|
||
local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId)
|
||
if equipData ~= nil then
|
||
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
|
||
end
|
||
end
|
||
local hasBetterRings, betterRingsState = HeroManager.GetRingsIsShowRedPoint(curHeroData)
|
||
for i = 1, 8 do
|
||
if i == 5 or i == 6 then
|
||
local equip = Util.GetGameObject(this.gameObject, "roleEquipLayout/equipInfo/equip" .. i)
|
||
local redpoint = Util.GetGameObject(equip, "redPoint")
|
||
if betterRingsState ~= nil and betterRingsState ~= nil then
|
||
this.SetActive(redpoint, betterRingsState["Rings" .. i - 4])
|
||
else
|
||
this.SetActive(Util.GetGameObject(redpoint, "redPoint"), false)
|
||
end
|
||
else
|
||
local state = not isLink
|
||
if i == 7 or i == 8 then
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
state = curHeroData.star >= tonumber(limit[i - 6])
|
||
end
|
||
this.SetActive(this.equipRedPoint[i], false)
|
||
local curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i)
|
||
if curHeroEquipDatas[i] == nil then
|
||
if curPosEquip and #curPosEquip > 0 then
|
||
this.SetActive(this.equipRedPoint[i], state)
|
||
end
|
||
else
|
||
if curPosEquip and #curPosEquip > 0 then
|
||
local addPower = 0
|
||
local curPower = 0
|
||
if curHeroEquipDatas[i] then
|
||
curPower = EquipManager.CalculateWarForce(curHeroEquipDatas[i].id)
|
||
end
|
||
for j = 1, #curPosEquip do
|
||
local curEquip = curPosEquip[j]
|
||
if curEquip then
|
||
addPower = EquipManager.CalculateWarForce(curEquip.id)
|
||
end
|
||
if addPower > curPower then
|
||
this.SetActive(this.equipRedPoint[i], state)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--一键装备
|
||
function this:AllEquipUp()
|
||
local allEquipIds = {}
|
||
|
||
--计算英雄身上的所有装备位的装备
|
||
local curHeroEquipDatas = {}
|
||
for k, v in ipairs(curHeroData.equipIdList) do
|
||
local equipData = EquipManager.GetSingleHeroSingleEquipData(v, curHeroData.dynamicId)
|
||
if equipData ~= nil then
|
||
curHeroEquipDatas[equipData.equipConfig.Position] = equipData
|
||
else
|
||
end
|
||
end
|
||
|
||
local equipEffectPos = {}
|
||
for i = 1, 8 do
|
||
local curPosEquip = {}
|
||
if i == 5 or i == 6 then
|
||
else
|
||
if i == 7 or i == 8 then
|
||
local limit = string.split(SpecialConfig[157].Value, "#")
|
||
if curHeroData.star >= tonumber(limit[i - 6]) then
|
||
curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i)
|
||
end
|
||
else
|
||
curPosEquip = BagManager.GetEquipDataByEquipPosition(curHeroData.heroConfig.Profession, i)
|
||
end
|
||
--计算每个位置可装备的装备战力 取战力最大的装备
|
||
if curPosEquip and #curPosEquip > 0 then
|
||
local equiData = {}
|
||
local indexMaxPower = 0
|
||
if curHeroEquipDatas[i] then
|
||
equiData = curHeroEquipDatas[i]
|
||
indexMaxPower = EquipManager.CalculateWarForce(curHeroEquipDatas[i].id)
|
||
end
|
||
for k = 1, #curPosEquip do
|
||
local addPower = 0
|
||
local curEquip = curPosEquip[k]
|
||
if curEquip then
|
||
addPower = EquipManager.CalculateWarForce(curEquip.id)
|
||
end
|
||
if addPower >= indexMaxPower then
|
||
indexMaxPower = addPower
|
||
equiData = curEquip
|
||
end
|
||
end
|
||
|
||
if not curHeroEquipDatas[i] or tonumber(equiData.id) ~= tonumber(curHeroEquipDatas[i].id) then
|
||
table.insert(allEquipIds, tostring(equiData.id))
|
||
end
|
||
|
||
if curHeroEquipDatas[equiData.position] then
|
||
if equiData.id ~= curHeroEquipDatas[equiData.position].id then
|
||
table.insert(equipEffectPos, i)
|
||
end
|
||
else
|
||
--table.insert(showEffectPos,i)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
if allEquipIds and #allEquipIds > 0 then
|
||
NetManager.EquipWearRequest(curHeroData.dynamicId, allEquipIds, 1, function()
|
||
this.UpdateEquipPosHeroData(1, 4, allEquipIds)
|
||
if equipEffectPos then
|
||
for i = 1, #equipEffectPos do
|
||
this.SetActive(effectList[equipEffectPos[i]], false)
|
||
this.SetActive(effectList[equipEffectPos[i]], true)
|
||
end
|
||
end
|
||
end)
|
||
else
|
||
if not allEquipIds or #allEquipIds < 1 then
|
||
PopupTipPanel.ShowTipByLanguageId(11826)
|
||
else
|
||
PopupTipPanel.ShowTipByLanguageId(11827)
|
||
end
|
||
end
|
||
PlaySoundWithoutClick(SoundConfig.Sound_Wear)
|
||
this.ShowHeroEquip()
|
||
end
|
||
|
||
--一键卸载
|
||
function this:AllEquipDown()
|
||
if curHeroData.equipIdList and #curHeroData.equipIdList > 0 then
|
||
if curHeroData.equipIdList and #curHeroData.equipIdList > 0 then
|
||
NetManager.EquipUnLoadOptRequest(
|
||
curHeroData.dynamicId,
|
||
curHeroData.equipIdList,
|
||
1,
|
||
function()
|
||
this.UpdateEquipPosHeroData(1, 5, curHeroData.equipIdList)
|
||
end
|
||
)
|
||
end
|
||
else
|
||
PopupTipPanel.ShowTipByLanguageId(11828)
|
||
end
|
||
PlaySoundWithoutClick(SoundConfig.Sound_TakeOff)
|
||
this.ShowHeroEquip()
|
||
end
|
||
|
||
--芯片信息
|
||
function this.UpdateHeroMedalData()
|
||
local WearmedalListWear = MedalManager.MedalDaraByHero(curHeroData.dynamicId)
|
||
|
||
local suitRes = {}
|
||
suitRes = MedalManager.SuitHeroSuitActive(WearmedalListWear)
|
||
HeroManager.SetHeroSuitAtive(curHeroData.dynamicId, suitRes)
|
||
local suitActiveList = HeroManager.GetHeroSuitActive(curHeroData.dynamicId)
|
||
|
||
--套装激活文字显示
|
||
this.SetActive(this.noSuit, false)
|
||
this.SetActive(this.suit1, true)
|
||
this.SetActive(this.suit2, true)
|
||
if LengthOfTable(suitActiveList) > 0 then
|
||
for i = 1, LengthOfTable(suitActiveList) do
|
||
local data = suitActiveList[i]
|
||
local suit = Util.GetGameObject(this.roleChipLayout, "suit" .. i)
|
||
Util.SetGray(suit, false)
|
||
RoleInfoPanel.ShowSuitActive(suit, data, true)
|
||
end
|
||
|
||
if LengthOfTable(suitActiveList) == 1 then
|
||
Util.SetGray(this.suit2, true)
|
||
RoleInfoPanel.ShowSuitActive(this.suit2, { num = 4, suitId = suitActiveList[1].suitId }, false)
|
||
end
|
||
else
|
||
--身上有无芯片
|
||
if LengthOfTable(WearmedalListWear) >= 1 then
|
||
local data = {}
|
||
for k, v in pairs(WearmedalListWear) do
|
||
while true do
|
||
if v ~= nil then
|
||
data = v
|
||
break
|
||
end
|
||
break
|
||
end
|
||
end
|
||
--显示最小芯片
|
||
for i = 1, 2 do
|
||
local suit = Util.GetGameObject(this.roleChipLayout, "suit" .. i)
|
||
local num = { 2, 4 }
|
||
Util.SetGray(suit, true)
|
||
RoleInfoPanel.ShowSuitActive(suit, { num = num[i], suitId = data.suitId }, false)
|
||
end
|
||
else
|
||
this.SetActive(this.noSuit, true)
|
||
this.SetActive(this.suit1, false)
|
||
this.SetActive(this.suit2, false)
|
||
end
|
||
end
|
||
--芯片展示
|
||
for i = 1, 4 do
|
||
local chipItem = this.chipList[i]
|
||
local chipBtn = Util.GetGameObject(chipItem, "chipBtn")
|
||
local noChip = Util.GetGameObject(chipItem, "noChip")
|
||
local frame = Util.GetGameObject(chipItem, "haveChip")
|
||
local icon = Util.GetGameObject(chipItem, "haveChip/chip")
|
||
-- local text = Util.GetGameObject(chipItem,"name")
|
||
local star = Util.GetGameObject(chipItem, "star")
|
||
|
||
if WearmedalListWear[i] then
|
||
this.SetActive(noChip, false)
|
||
this.SetActive(frame, true)
|
||
frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(WearmedalListWear[i]
|
||
.medalConfig.Quality))
|
||
icon:GetComponent("Image").sprite = Util.LoadSprite(WearmedalListWear[i].icon)
|
||
SetHeroStars(star, WearmedalListWear[i].medalConfig.Star)
|
||
else
|
||
this.SetActive(noChip, true)
|
||
this.SetActive(frame, false)
|
||
end
|
||
Util.AddOnceClick(chipBtn, function()
|
||
if WearmedalListWear[i] then
|
||
UIManager.OpenPanel(UIName.MedalParticularsPopup, WearmedalListWear[i], i, true, curHeroData.dynamicId,
|
||
true, true) --data勋章 槽位ID 是否穿戴在英雄身上 英雄id
|
||
else
|
||
UIManager.OpenPanel(UIName.MedalChangelPopup, i, curHeroData.dynamicId) --槽位id 英雄ID
|
||
end
|
||
end)
|
||
end
|
||
|
||
this:RefreshChipRedPoint()
|
||
end
|
||
|
||
--刷新芯片红点
|
||
function this:RefreshChipRedPoint()
|
||
for i = 1, 4 do
|
||
this.SetActive(this.chipRedpointList[i], false)
|
||
local shipList = MedalManager.MedalDaraBySite(i, curHeroData.dynamicId)
|
||
if #shipList > 0 then
|
||
if Util.GetGameObject(this.chipList[i], "noChip").activeSelf then
|
||
this.SetActive(this.chipRedpointList[i], true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function this.ShowSuitActive(suit, data, isActive)
|
||
local activation = Util.GetGameObject(suit, "activation/Image")
|
||
local name = Util.GetGameObject(suit, "suitName")
|
||
local num = Util.GetGameObject(suit, "suitName/suitNum")
|
||
local star = Util.GetGameObject(suit, "suitLv/lv")
|
||
local icon = Util.GetGameObject(suit, "pro/icon")
|
||
local proName = Util.GetGameObject(suit, "pro/pro")
|
||
local value = Util.GetGameObject(suit, "pro/num")
|
||
|
||
local medalSuitData = MedalManager.GetMedalSuitInfoById(data.suitId)
|
||
local suitTypedata = MedalManager.GetMedalSuitInfoByType(medalSuitData.Type)
|
||
this.SetActive(activation, isActive)
|
||
Util.SetGray(activation, not isActive)
|
||
name:GetComponent("Text").text = GetLanguageStrById(suitTypedata.Name)
|
||
num:GetComponent("Text").text = string.format("(%s/4)", data.num)
|
||
star:GetComponent("Text").text = string.format(GetLanguageStrById(23121), medalSuitData.Star)
|
||
for k, v in pairs(medalSuitData.SuitAttr) do
|
||
if v[1] == data.num then
|
||
if v[2] == 8888 then
|
||
local PassiveSkillConfigData = ConfigManager.GetConfigDataByKey(ConfigName.PassiveSkillConfig, "Id", v
|
||
[3])
|
||
icon.transform.localScale = Vector3.one * 0.7
|
||
-- icon:GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(PassiveSkillConfigData.Icon))
|
||
proName:GetComponent("Text").text = string.format(GetLanguageStrById(23148),
|
||
GetLanguageStrById(PassiveSkillConfigData.Name))
|
||
value:GetComponent("Text").text = ""
|
||
else
|
||
icon.transform.localScale = Vector3.one
|
||
local PropertyConfigData = ConfigManager.GetConfigDataByKey(ConfigName.PropertyConfig, "PropertyId", v
|
||
[2])
|
||
|
||
-- icon:GetComponent("Image").sprite = Util.LoadSprite(PropertyConfigData.Icon)
|
||
proName:GetComponent("Text").text = GetLanguageStrById(PropertyConfigData.Info)
|
||
value:GetComponent("Text").text = "+" .. GetPropertyFormatStr(PropertyConfigData.Style, v[3])
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--检测英雄重铸是否开启
|
||
function this:checkUnlockEquipCastGod()
|
||
local specialConfig = ConfigManager.GetConfigDataByKey(ConfigName.SpecialConfig, "Key", "AdjustUnlockStar")
|
||
if curHeroData.star >= tonumber(specialConfig.Value) then
|
||
return true
|
||
end
|
||
return false
|
||
end
|
||
|
||
--检测戒指是否开启
|
||
function this:checkUnlockCombatPlan(slot)
|
||
local s_type = 0
|
||
local s_value = 0
|
||
local specialConfig = ConfigManager.GetConfigDataByKey(ConfigName.SpecialConfig, "Key", "CombatPlanUnlock")
|
||
local valueArray = string.split(specialConfig.Value, "|")
|
||
local a = string.split(valueArray[slot], "#")
|
||
s_type = a[2]
|
||
s_value = a[3]
|
||
if tonumber(s_type) == 1 then
|
||
return curHeroData.lv >= tonumber(s_value), string.format(GetLanguageStrById(10062), s_value)
|
||
elseif tonumber(s_type) == 2 then
|
||
return curHeroData.star >= tonumber(s_value), s_value .. GetLanguageStrById(10488)
|
||
end
|
||
return false, ""
|
||
end
|
||
|
||
------------------------------------------------------页签----------------------------------------------------------
|
||
--隐藏layout下所有节点
|
||
function this.HideAllLayout()
|
||
local layoutCount = this.layout.transform.childCount
|
||
for i = 0, layoutCount - 1 do
|
||
this.SetActive(this.layout.transform:GetChild(i).gameObject, false)
|
||
end
|
||
end
|
||
|
||
--页签选中效果设置
|
||
function this:SetSelectBtn(_btn)
|
||
local btnListCount = self.btnList.transform.childCount
|
||
for i = 0, btnListCount - 1 do
|
||
Util.GetGameObject(this.btnList.transform:GetChild(i), "bg"):GetComponent("Image").sprite = Util.LoadSprite(
|
||
"X1_tongyong_fenlan_weixuanzhong_02")
|
||
this.SetActive(Util.GetGameObject(this.btnList.transform:GetChild(i), "title"), false)
|
||
this.SetActive(Util.GetGameObject(this.btnList.transform:GetChild(i), "name"), false)
|
||
this.SetActive(Util.GetGameObject(this.btnList.transform:GetChild(i), "name2"), true)
|
||
end
|
||
Util.GetGameObject(_btn, "bg"):GetComponent("Image").sprite = Util.LoadSprite("X1_tongyong_fenlan_yixuanzhong_02")
|
||
this.SetActive(Util.GetGameObject(_btn, "title"), true)
|
||
this.SetActive(Util.GetGameObject(_btn, "name"), true)
|
||
this.SetActive(Util.GetGameObject(_btn, "name2"), false)
|
||
|
||
if this.isFirstOpen then
|
||
this.isFirstOpen = false
|
||
else
|
||
this.leftBtn.transform.position = Util.GetGameObject(_btn, "leftBtnPos").transform.position
|
||
this.rightBtn.transform.position = Util.GetGameObject(_btn, "rightBtnPos").transform.position
|
||
end
|
||
end
|
||
|
||
function this:SelectBtn(_btn)
|
||
local selectBtnPos = Vector3.New(6, 6.3, 0)
|
||
this.btnSelect.transform:SetParent(Util.GetGameObject(_btn, "target").transform)
|
||
this.btnSelect.transform.localPosition = selectBtnPos
|
||
Util.GetGameObject(this.btnSelect, "Text"):GetComponent("Text").text = Util.GetGameObject(_btn, "Text"):GetComponent(
|
||
"Text").text
|
||
end
|
||
|
||
function this.OnClick(type)
|
||
this.HideAllLayout()
|
||
if type == btnType.Info then
|
||
this.SetActive(this.roleInfoLayout, true)
|
||
this:SetSelectBtn(this.btnInfo)
|
||
this.MoveLive(-150)
|
||
liveDeviation = -1
|
||
elseif type == btnType.Equip then
|
||
this.SetActive(this.roleEquipLayout, true)
|
||
this:SetSelectBtn(this.btnEquip)
|
||
this.MoveLive(0)
|
||
liveDeviation = 0
|
||
elseif type == btnType.Culture then
|
||
this.SetActive(this.roleUpStarLayout, true)
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this:SetSelectBtn(this.btnCulture)
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
this:UpdateHeroUpStarProUpShow()
|
||
this:SelectBtn(this.btnUpStar)
|
||
elseif type == btnType.UpStar then
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this.SetActive(this.roleUpStarLayout, true)
|
||
this:SelectBtn(this.btnUpStar)
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
elseif type == btnType.Ability then
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this.SetActive(this.roleAbilityLayout, true)
|
||
this:SelectBtn(this.btnAbility)
|
||
this:AbilityUpdateUI()
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
elseif type == btnType.Chip then
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this.SetActive(this.roleChipLayout, true)
|
||
this:SelectBtn(this.btnChip)
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
elseif type == btnType.Overclock then
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this:SelectBtn(this.btnOverclock)
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
elseif type == btnType.FlagArr then
|
||
this.SetActive(this.btnCultureBtnList, true)
|
||
this:SelectBtn(this.btnFlagArr)
|
||
this.MoveLive(150)
|
||
liveDeviation = 1
|
||
end
|
||
end
|
||
|
||
--能力界面更新
|
||
function this:AbilityUpdateUI()
|
||
-- local limit = {
|
||
-- ["limitStarLv1"] = 6,
|
||
-- ["limitStarLv2"] = 11
|
||
-- }
|
||
|
||
local limit = {}
|
||
-- local strs = string.split(SpecialConfig[123].Value, "|")
|
||
-- for i = 1, #strs do
|
||
-- local arr = string.split(strs[i], "#")
|
||
-- table.insert(limit, {pos = tonumber(arr[1]), type = tonumber(arr[2]), limit = tonumber(arr[3])})
|
||
-- end
|
||
local strs = string.split(SpecialConfig[90].Value, "#")
|
||
for i = 1, #strs do
|
||
table.insert(limit, tonumber(strs[i]))
|
||
end
|
||
|
||
local abilityPointStateRes = {
|
||
["ability1"] = false,
|
||
["ability2"] = false,
|
||
["ability3"] = false,
|
||
}
|
||
|
||
abilityPointStateRes = HeroManager.GetCurHeroAbilityIsShowRedPoint(curHeroData)
|
||
for i = 1, 3 do
|
||
local item = Util.GetGameObject(this.abilityItemGrid, string.format("Item%d", i))
|
||
local frame = Util.GetGameObject(item, "frame")
|
||
local btn = frame:GetComponent("Button")
|
||
local icon = Util.GetGameObject(item, "icon")
|
||
local add = Util.GetGameObject(item, "add")
|
||
local lock = Util.GetGameObject(item, "lock")
|
||
local name = Util.GetGameObject(item, "name"):GetComponent("Text")
|
||
local redPoint = Util.GetGameObject(item, "redPoint")
|
||
|
||
-- local isOpen = false
|
||
-- if limit[i].type == 1 then
|
||
-- isOpen = curHeroData.lv >= limit[i].limit
|
||
-- elseif limit[i].type == 2 then
|
||
-- isOpen = curHeroData.star >= limit[i].limit
|
||
-- end
|
||
local isOpen = curHeroData.star >= limit[i]
|
||
if isOpen then -- isOpen
|
||
local isOn = false
|
||
local warWaySlotId = curHeroData[string.format("warWaySlot%dId", i)]
|
||
LogRed("sssssssssssssssssssssssssssssssss" .. warWaySlotId)
|
||
if warWaySlotId and warWaySlotId ~= 0 then
|
||
isOn = true
|
||
end
|
||
if isOn then
|
||
--如果检测到已经学习了能力那么就关闭红点
|
||
this.SetActive(add, false)
|
||
--this.SetActive(redPoint,false)
|
||
this.SetActive(redPoint, abilityPointStateRes["ability" .. tostring(i)])
|
||
name.text = ""
|
||
this.SetActive(icon, true)
|
||
Util.AddOnceClick(frame, function()
|
||
UIManager.OpenPanel(UIName.WarWayLevelUpPopup, curHeroData, i, warWaySlotId)
|
||
end)
|
||
local warWayConfig = WarWaySkillConfig[warWaySlotId]
|
||
icon:GetComponent("Image").sprite = Util.LoadSprite(GetResourceStr(warWayConfig.Image))
|
||
frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(warWayConfig.Level))
|
||
local PassiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig)
|
||
name.text = GetLanguageStrById(PassiveSkillConfig[warWayConfig.SkillId].Name)
|
||
else
|
||
name.text = ""
|
||
--解锁了能力但是没有学习能力,加号和红点都显示
|
||
--this.SetActive(redPoint,HeroManager.GetCurHeroAbilityIsShowRedPoint(curHeroData))
|
||
abilityPointStateRes["ability" .. tostring(i)] = HeroManager.IsCompetencySkills(i)
|
||
|
||
this.SetActive(add, true)
|
||
this.SetActive(icon, false)
|
||
Util.AddOnceClick(frame, function()
|
||
UIManager.OpenPanel(UIName.WarWayComprehendPopup, curHeroData, i)
|
||
end)
|
||
frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(0))
|
||
end
|
||
this.SetActive(lock, false)
|
||
btn.enabled = true
|
||
else
|
||
--角色星级不够,开启锁图标,关闭红点和加号还有锁图标
|
||
this.SetActive(lock, true)
|
||
this.SetActive(add, false)
|
||
this.SetActive(icon, false)
|
||
-- btn.enabled = false
|
||
|
||
-- local str
|
||
-- if limit[i].type == 1 then
|
||
-- str = limit[i].limit..GetLanguageStrById(50508)
|
||
-- else
|
||
-- str = limit[i].limit..GetLanguageStrById(50509)
|
||
-- end
|
||
local str = limit[i] .. GetLanguageStrById(50509)
|
||
Util.AddOnceClick(frame, function()
|
||
PopupTipPanel.ShowTip(str)
|
||
end)
|
||
name.text = str
|
||
frame:GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(0))
|
||
end
|
||
this.SetActive(redPoint, abilityPointStateRes["ability" .. tostring(i)])
|
||
end
|
||
|
||
local isRedpoint = abilityPointStateRes["ability" .. tostring(1)] or abilityPointStateRes["ability" .. tostring(2)]
|
||
this.SetActive(this.btnAbilityRedPoint, isRedpoint)
|
||
end
|
||
|
||
--拖拽立绘
|
||
local beginV3
|
||
local endV3
|
||
local distance
|
||
function this:OnBeginDrag(Pointgo, data)
|
||
beginV3 = this.curLiveObj.transform.anchoredPosition
|
||
end
|
||
|
||
function this:OnDrag(Pointgo, data)
|
||
distance = Vector2.Distance(beginV3, this.curLiveObj.transform.anchoredPosition)
|
||
end
|
||
|
||
function this:OnEndDrag(Pointgo, data)
|
||
endV3 = this.curLiveObj.transform.anchoredPosition
|
||
if distance > 250 and endV3.x < 0 then
|
||
this:RightBtnOnClick()
|
||
this.ShowHeroEquip()
|
||
elseif distance > 250 and endV3.x > 0 then
|
||
this:LeftBtnOnClick()
|
||
this.ShowHeroEquip()
|
||
else
|
||
local tweenEndVer = Vector2.New(curHeroData.position[1], curHeroData.position[2])
|
||
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndVer, 0.5, false):SetEase(Ease.Linear)
|
||
end
|
||
distance = 0
|
||
end
|
||
|
||
function this.MoveLive(pos)
|
||
local tweenEndVer = Vector2.New(curHeroData.heroConfig.Position[1] + pos, curHeroData.heroConfig.Position[2])
|
||
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndVer, 0.3, false):SetEase(Ease.Linear)
|
||
end
|
||
|
||
--右切换按钮点击
|
||
function this:RightBtnOnClick()
|
||
if isClickLeftOrRightBtn == false then
|
||
return
|
||
end
|
||
isClickLeftOrRightBtn = false
|
||
this.rightBtn:GetComponent("Button").enabled = false
|
||
local oldIndexConfigData = heroDatas[index]
|
||
index = (index + 1 <= #heroDatas and index + 1 or 1)
|
||
curHeroData = heroDatas[index]
|
||
|
||
if this.leftLiveObj then
|
||
UnLoadHerolive(leftHeroData.heroConfig, this.leftLiveObj)
|
||
Util.ClearChild(this.leftObj.transform)
|
||
this.leftLiveObj = nil
|
||
end
|
||
this.curLiveObj.transform:SetParent(self.leftObj.transform)
|
||
|
||
local tweenEndVer = Vector2.New(oldIndexConfigData.position[1], oldIndexConfigData.position[2])
|
||
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndVer, 0.5, false):SetEase(Ease.Linear)
|
||
this.rightLiveObj.transform:SetParent(this.curObj.transform)
|
||
|
||
--立绘偏移动画
|
||
local tweenEndRightVer
|
||
if liveDeviation == 1 then
|
||
tweenEndRightVer = Vector2.New(rightHeroData.position[1] + 150, rightHeroData.position[2])
|
||
elseif liveDeviation == -1 then
|
||
tweenEndRightVer = Vector2.New(rightHeroData.position[1] - 150, rightHeroData.position[2])
|
||
else
|
||
tweenEndRightVer = Vector2.New(rightHeroData.position[1], rightHeroData.position[2])
|
||
end
|
||
this.rightLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndRightVer, 0.4, false):OnComplete(function()
|
||
this:UpdateLiveList()
|
||
this.leftLiveObj = this.curLiveObj
|
||
this.curLiveObj = this.rightLiveObj
|
||
this.rightLiveObj = LoadHerolive(rightHeroData.heroConfig, self.rightObj)
|
||
this:UpdatePanelData()
|
||
this:UpdateHeroUpStarProUpShow()
|
||
this.rightBtn:GetComponent("Button").enabled = true
|
||
isClickLeftOrRightBtn = true
|
||
end):SetEase(Ease.Linear)
|
||
end
|
||
|
||
--左切换按钮点击
|
||
function this:LeftBtnOnClick()
|
||
if isClickLeftOrRightBtn == false then
|
||
return
|
||
end
|
||
isClickLeftOrRightBtn = false
|
||
this.leftBtn:GetComponent("Button").enabled = false
|
||
local oldIndexConfigData = heroDatas[index]
|
||
index = (index - 1 > 0 and index - 1 or #heroDatas)
|
||
curHeroData = heroDatas[index]
|
||
if this.rightLiveObj then
|
||
UnLoadHerolive(rightHeroData.heroConfig, this.rightLiveObj)
|
||
Util.ClearChild(this.rightObj.transform)
|
||
this.rightLiveObj = nil
|
||
end
|
||
this.curLiveObj.transform:SetParent(this.rightObj.transform)
|
||
local tweenEndVer = Vector2.New(oldIndexConfigData.position[1], oldIndexConfigData.position[2])
|
||
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndVer, 0.5, false):SetEase(Ease.Linear)
|
||
this.leftLiveObj.transform:SetParent(this.curObj.transform)
|
||
|
||
--立绘偏移动画
|
||
local tweenEndLeftVer
|
||
if liveDeviation == 1 then
|
||
tweenEndLeftVer = Vector2.New(leftHeroData.position[1] + 150, leftHeroData.position[2])
|
||
elseif liveDeviation == -1 then
|
||
tweenEndLeftVer = Vector2.New(leftHeroData.position[1] - 150, leftHeroData.position[2])
|
||
else
|
||
tweenEndLeftVer = Vector2.New(leftHeroData.position[1], leftHeroData.position[2])
|
||
end
|
||
this.leftLiveObj:GetComponent("RectTransform"):DOAnchorPos(tweenEndLeftVer, 0.4, false):OnComplete(function()
|
||
this:UpdateLiveList()
|
||
this.rightLiveObj = this.curLiveObj
|
||
this.curLiveObj = this.leftLiveObj
|
||
this.leftLiveObj = LoadHerolive(leftHeroData.heroConfig, self.leftObj)
|
||
this:UpdatePanelData()
|
||
this:UpdateHeroUpStarProUpShow()
|
||
this.leftBtn:GetComponent("Button").enabled = true
|
||
isClickLeftOrRightBtn = true
|
||
end):SetEase(Ease.Linear)
|
||
end
|
||
|
||
--设置显隐
|
||
function this.SetActive(go, value)
|
||
if IsNull(go) then
|
||
return
|
||
end
|
||
if value and not go.activeSelf then
|
||
go:SetActive(value)
|
||
elseif not value and go.activeSelf then
|
||
go:SetActive(value)
|
||
end
|
||
end
|
||
|
||
-- --点击时检测功能
|
||
-- function this.FunctionClickEvent(funcId, callback)
|
||
-- if not funcId or funcId == 0 or not callback then return end
|
||
|
||
-- local isOpen = ActTimeCtrlManager.SingleFuncState(funcId)
|
||
-- if isOpen then
|
||
-- if callback then callback() end
|
||
-- else
|
||
-- PopupTipPanel.ShowTip(ActTimeCtrlManager.GetFuncTip(funcId))
|
||
-- end
|
||
-- end
|
||
|
||
--铸神等级
|
||
function this.ShowAddLevel(curPos)
|
||
local AddLevel = 0
|
||
local curData = curHeroData.partsData[curPos]
|
||
if not curData then
|
||
return 0
|
||
end
|
||
if curData.isUnLock > curData.actualLv then
|
||
AddLevel = curData.actualLv
|
||
else
|
||
AddLevel = curData.isUnLock
|
||
end
|
||
if AddLevel < 0 then AddLevel = 0 end
|
||
return AddLevel
|
||
end
|
||
|
||
return RoleInfoPanel
|