require("Base/BasePanel")
local listpanel=require("Modules/RoleInfo/RoleListPanel")
RoleInfoPanel = Inherit(BasePanel)
local this = RoleInfoPanel
local _CurPageIndex = 1
local orginLayer
local tabsList = {}
local tabs = {
[RoleInfoPanelIndex.qingbao] = {default = "UI_hz_gonghui_31", lock = "UI_hz_gonghui_31", select = "UI_hz_gonghui_31",title = Language[11093],rpType = -1,
},
[RoleInfoPanelIndex.shenhun] = {default = "UI_hz_gonghui_32", lock = "UI_hz_gonghui_32", select = "UI_hz_gonghui_32",title = "神魂",rpType = -1,
},
[RoleInfoPanelIndex.jinjie] = {default = "UI_hz_gonghui_33", lock = "UI_hz_gonghui_33", select = "UI_hz_gonghui_33",title = Language[11815],rpType = -1,
},
[RoleInfoPanelIndex.juexing] = {default = "UI_hz_gonghui_34", lock = "UI_hz_gonghui_34", select = "UI_hz_gonghui_34",title = Language[10373],rpType = -1,
},
[RoleInfoPanelIndex.chuanshuo] = {default = "UI_hz_gonghui_31", lock = "UI_hz_gonghui_31", select = "UI_hz_gonghui_31",title = Language[11095],rpType = -1,
},
[RoleInfoPanelIndex.pifu] = {default = "UI_hz_gonghui_32", lock = "UI_hz_gonghui_32", select = "UI_hz_gonghui_32",title = Language[11816],rpType = -1,
},
[RoleInfoPanelIndex.feiSheng] = {default = "UI_hz_gonghui_33", lock = "UI_hz_gonghui_33", select = "UI_hz_gonghui_33",title = "飞升",rpType = -1,
},
}
local tabPage = {
[RoleInfoPanelIndex.qingbao] = SubUIConfig.RoleInfoLayout,
[RoleInfoPanelIndex.shenhun] = SubUIConfig.RoleGodSoulLayout,
[RoleInfoPanelIndex.jinjie] = SubUIConfig.RoleUpStarLayout,
[RoleInfoPanelIndex.juexing] = SubUIConfig.RoleAwakelayout,
[RoleInfoPanelIndex.chuanshuo] = SubUIConfig.RoleStoryLayout,
[RoleInfoPanelIndex.pifu] = SubUIConfig.RoleSkinLayout,
[RoleInfoPanelIndex.feiSheng] = SubUIConfig.RoleFlyUpLayout,
}
local curHeroData--当前英雄信息
local leftHeroData--左边预加载英雄信息
local rightHeroData--右边预加载英雄信息
local curHeroPosition --
local heroDatas--所有英雄list信息
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local heroRankupConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local heroSkinConfig = ConfigManager.GetConfig(ConfigName.HeroSkin)
local XiuXianSkillConfig = ConfigManager.GetConfig(ConfigName.XiuXianSkillConfig)
local index--当前英雄在 英雄列表中的索引
local soulPrintData={}--魂印数据
local isUpZhen = false--当前英雄是否上阵
local isClickLeftOrRightBtn = true--点击左右按钮切换英雄播放动画状态
local teamHero = {}--主线编队成员信息
local talismanIsOpen = false--法宝是否开启
local soulPrintIsOpen = false--魂印是否开启
local isProChange=false
local isOpenGod
--初始化组件(用于子类重写)
function RoleInfoPanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.bg = Util.GetGameObject(self.gameObject, "bg")
screenAdapte(this.bg)
orginLayer = 0
this.BtnBack = Util.GetGameObject(self.transform, "btnBack")
this.bgImageList = {}
for i = 1, 5 do
this.bgImageList[i] = Util.GetGameObject(self.transform, "bg/di ("..i..")")
end
this.curObj= Util.GetGameObject(self.transform, "curObj")
this.leftObj= Util.GetGameObject(self.transform, "leftObj")
this.rightObj= Util.GetGameObject(self.transform, "rightObj")
this.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject")
this.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject")
this.roleInfoRoot = Util.GetGameObject(self.transform, "rolePanel")
this.rolePanelOp = Util.GetGameObject(this.roleInfoRoot,"layout")
this.nameInfo = Util.GetGameObject(this.roleInfoRoot, "info")
this.nameAndPossLayout = Util.GetGameObject(this.nameInfo, "nameAndPossLayout")
this.profession = Util.GetGameObject(this.nameAndPossLayout, "proImage"):GetComponent("Image")
this.proChangeBtn=Util.GetGameObject(this.nameInfo, "nameAndPossLayout/bg/proImage/changeBtn")
this.heroName = Util.GetGameObject(this.nameAndPossLayout, "heroName"):GetComponent("Text")
this.starGrid = Util.GetGameObject(this.nameInfo, "sartAndLvLayout")
--上锁
this.lockBtn=Util.GetGameObject(this.roleInfoRoot,"lockBtn")
this.lockImage=Util.GetGameObject(this.lockBtn.transform,"lock")
this.lockImage:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_tongyong_suoding_zh")
this.unlockImage=Util.GetGameObject(this.lockBtn.transform,"unlock")
this.unlockImage:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_tongyong_jiesuo_zh")
this.pos = Util.GetGameObject(this.roleInfoRoot,"Pos")
this.posQuality = Util.GetGameObject(this.roleInfoRoot,"quality"):GetComponent("Image")
this.RecallBtn=Util.GetGameObject(this.roleInfoRoot,"RecallBtn")--角色归元按钮
-- this.RecallBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_fabao_guiyuan_zh")
this.reStarBtn=Util.GetGameObject(this.roleInfoRoot,"reStarBtn")--角色归元按钮
--this.reStarBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_hero_huitui")
this.powerBtn = Util.GetGameObject(this.roleInfoRoot, "powerBtn")
this.force = Util.GetGameObject(this.powerBtn, "value"):GetComponent("Text")
this.upLvEffect = Util.GetGameObject(this.powerBtn,"effect")
this.equipBtn=Util.GetGameObject(self.transform,"leftGrid/btnBGequip/equipBtn")
this.equipBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("UI_hz_shenjiang_34")
this.equipBtnRedPoint=Util.GetGameObject(this.equipBtn,"redPoint")
this.soulPrintBtn=Util.GetGameObject(self.transform,"leftGrid/btnBGsoul/soulPrintBtn")
this.soulPrintBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("UI_hz_qianneng_14")
this.soulPrintBtnRedPoint=Util.GetGameObject(this.soulPrintBtn,"redPoint")
this.talismanBtn=Util.GetGameObject(self.transform,"rightGrid/talismanBtn") --该按钮控制入口显隐
this.talismanClick=Util.GetGameObject(this.talismanBtn,"panel") --控制按钮的点击事件 置灰
this.talismanClick:GetComponent("Image").sprite = this.spLoader:LoadSprite("UI_hz_shenjiang_35")
this.talismanBtnRedPoint=Util.GetGameObject(this.talismanClick,"redPoint")
this.talismanInfo=Util.GetGameObject(this.talismanBtn,"info") --查看法宝特性按钮
this.imprintBtn=Util.GetGameObject(self.transform,"leftGrid/imprintBtn")
this.imprintBtnIcon=Util.GetGameObject(this.imprintBtn,"icon"):GetComponent("Image")
this.imprintImg=Util.GetGameObject(this.imprintBtn,"Image"):GetComponent("Image")
this.godPrintBtn=Util.GetGameObject(self.transform,"leftGrid/GodprintBtn")
--this.godPrintBtnIcon=Util.GetGameObject(this.godPrintBtn,"icon"):GetComponent("Image")
this.godPrintImg=Util.GetGameObject(self.transform,"leftGrid/GodprintBtn"):GetComponent("Image")
this.godPrintImg.sprite=this.spLoader:LoadSprite("UI_hz_shenjiang_33")
this.godPrintBtnRedPoint=Util.GetGameObject(this.godPrintBtn,"redPoint")
--礼物
this.giftBtn=Util.GetGameObject(self.transform,"leftGrid/giftBtn")
this.giftImg=Util.GetGameObject(self.transform,"leftGrid/giftBtn/Image"):GetComponent("Image")
this.giftImg.sprite=this.spLoader:LoadSprite("UI_hz_zhonghe54")
this.giftRedPoint=Util.GetGameObject(this.giftBtn,"redPoint")
--潜能
this.potencyObj=Util.GetGameObject(self.transform,"rightGrid/potencyBtn")
this.potencyBtn=Util.GetGameObject(self.transform,"rightGrid/potencyBtn/Image")
this.potencyImg=Util.GetGameObject(self.transform,"rightGrid/potencyBtn/Image"):GetComponent("Image")
this.potencyImg.sprite=this.spLoader:LoadSprite("UI_hz_qianneng_42")
this.potencyRedPoint=Util.GetGameObject(self.transform,"rightGrid/potencyBtn/redPoint")
this.PageList = {}
this.GodSoulBtn=Util.GetGameObject(self.transform,"leftGrid/GodSoulBtn")
this.godSoulImg=Util.GetGameObject(self.transform,"leftGrid/GodSoulBtn"):GetComponent("Image")
this.godSoulImg.sprite=this.spLoader:LoadSprite("r_hero_shenhun")
this.godSoulBtnRedPoint=Util.GetGameObject(this.GodSoulBtn,"redPoint")
this.dragView = SubUIManager.Open(SubUIConfig.DragView, self.gameObject.transform)
this.dragView.transform:SetSiblingIndex(1)
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.btnList = Util.GetGameObject(self.transform,"tab/btnList")
this.btnPre = Util.GetGameObject(self.transform,"tab/btnInfo")
this.selectBtn = Util.GetGameObject(self.transform, "tab/selectBtn")
-- 上部货币显示
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft})
this.btnMask = Util.GetGameObject(self.transform, "btnMask")
this.btnMask.gameObject:SetActive(false)
this.tianfuBtn=Util.GetGameObject(self.transform,"rightGrid/tianfuBtn") --该按钮控制入口显隐
this.trainingBtn=Util.GetGameObject(self.transform,"rightGrid/trainingBtn") --该按钮控制入口显隐
this.trainingClick=Util.GetGameObject(self.transform,"rightGrid/trainingBtn/panel") --该按钮控制入口显隐
this.tianfuClick=Util.GetGameObject(this.tianfuBtn,"panel") --控制按钮的点击事件 置灰
this.trainingBtnRedPoint=Util.GetGameObject(this.trainingClick,"redPoint")
this.tianfuInfo=Util.GetGameObject(this.tianfuBtn,"info/Text"):GetComponent("Text") --查看法宝特性按钮
end
--绑定事件(用于子类重写)
function RoleInfoPanel:BindEvent()
Util.AddClick(this.BtnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
if listpanel and isProChange then
listpanel:ChangeProId(curHeroData.changeProId)
listpanel:GetCurSortHeroListData()
end
end)
--切换阵营按钮
Util.AddClick(this.proChangeBtn, function()
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.ChangeHeroPro,curHeroData,function()
this.profession.sprite =this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.changeProId))
heroDatas=HeroManager.GetHeroDataByProperty(curHeroData.changeProId)
isProChange=true
RoleInfoPanel:OnShow()
end)
end)
--角色归元按钮
Util.AddClick(this.RecallBtn,function()
if curHeroData.lv <= 1 then
PopupTipPanel.ShowTip(Language[12263])
return
end
if HarmonyManager.IsChangeColor(curHeroData.dynamicId) then
PopupTipPanel.ShowTip(Language[12184])
return
end
if HarmonyManager:IsEnvoy(curHeroData.dynamicId) and HarmonyManager:HongMengTowerUpLimit() ~= 0 then
if HarmonyManager.GetSingleAdditionsData(HarmonyAddType.AddLv).heroTid == 0 then
PopupTipPanel.ShowTip(Language[12184])
return
end
end
if curHeroData.lockState == 1 then
PopupTipPanel.ShowTip(Language[12264])
-- MsgPanel.ShowTwo("此神将已被锁定,是否解除锁定状态?", nil, function()
-- NetManager.HeroLockEvent(curHeroData.dynamicId,0,function ()
-- PopupTipPanel.ShowTip("神将解锁成功")
-- HeroManager.UpdateSingleHeroLockState(curHeroData.dynamicId,0)
-- end)
-- end)
return
end
local selectHero = {}
selectHero[curHeroData.dynamicId] = curHeroData
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.ResolveRecall,
HeroManager.GetHeroReturnItems(selectHero,GENERAL_POPUP_TYPE.ResolveRecall),selectHero)
end)
--角色归元按钮
Util.AddClick(this.reStarBtn,function()
if curHeroData.lv > 1 then
PopupTipPanel.ShowTip("只有1级的英雄才可回退,请先进行归元!")
return
end
if curHeroData.lockState == 1 then
PopupTipPanel.ShowTip(Language[12264])
return
end
local selectHero = {}
selectHero[curHeroData.dynamicId] = curHeroData
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.ResolveReStar,
HeroManager.GetHeroReturnItems(selectHero,GENERAL_POPUP_TYPE.ResolveReStar),selectHero)
end)
--左切换按钮
Util.AddClick(this.leftBtn, function()
this:LeftBtnOnClick()
end)
Util.AddClick(this.GodSoulBtn,function()
UIManager.OpenPanel(UIName.RoleGodSoulLayout,heroConFigData,heroStar)
end)
--右切换按钮
Util.AddClick(this.rightBtn, function()
this:RightBtnOnClick()
end)
Util.AddClick(this.dragView.gameObject, function()
local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "idle", false)
end)
--礼物
Util.AddClick(this.giftBtn, function()
UIManager.OpenPanel(UIName.RoleGiftPanel,curHeroData,heroDatas)
end)
--潜能
Util.AddClick(this.potencyBtn, function()
UIManager.OpenPanel(UIName.HeroPotencyPanel,curHeroData,heroDatas)
end)
--装备
Util.AddClick(this.equipBtn, function()
UIManager.OpenPanel(UIName.RoleEquipPanel,curHeroData,heroDatas,this,isUpZhen)
end)
--天赋
Util.AddClick(this.tianfuClick, function()
UIManager.OpenPanel(UIName.RoleTalentPopup,curHeroData.heroConfig,curHeroData.breakId,curHeroData.upStarId)
end)
--特训
Util.AddClick(this.trainingClick, function()
UIManager.OpenPanel(UIName.SpecailTrainingInfoPopup,curHeroData,1)
end)
--魂印
Util.AddClick(this.soulPrintBtn, function()
if soulPrintIsOpen then
UIManager.OpenPanel(UIName.SoulPrintPanel,curHeroData,heroDatas)
else
local EquipSignUnlock = ConfigManager.GetConfigData(ConfigName.GameSetting,1).EquipSignUnlock
PopupTipPanel.ShowTip(Language[10536]..NumToSimplenessFont[EquipSignUnlock[2][2]] .. Language[11817])
end
end)
Util.AddClick(this.godPrintBtn,function ()
if not isOpenGod then
PopupTipPanel.ShowTip("英雄六星解锁神印")
return
end
UIManager.OpenPanel(UIName.GodPrintPanel,curHeroData,heroDatas)
end)
--法宝
Util.AddClick(this.talismanClick,function()
if talismanIsOpen then
if curHeroData.baublesId==nil or curHeroData.baublesId=="" then
local list=FaLingManager.GetAllEquipDataNoBlessAndSort(curHeroData.heroConfig.EquipTalismana[2])
local curSelectList={}
UIManager.OpenPanel(UIName.FaLingListPanel,list,this,curSelectList,curHeroData,1)
else
LogError("curHeroData.baublesId==="..curHeroData.baublesId)
local data=FaLingManager.GetEquipDataByDid(curHeroData.baublesId)
UIManager.OpenPanel(UIName.FaLingSingleShowPopup,this,data,2,false,false,curHeroData)
end
else
PopupTipPanel.ShowTip(TalismanManager.GetCurHeroIsOpenTalismanTip())
end
end)
--查看法宝特性按钮
Util.AddClick(this.talismanInfo,function()
UIManager.OpenPanel(UIName.TalismanInfoPopup,curHeroData.heroConfig,1,1)
end)
--上锁
Util.AddClick(this.lockBtn,function()
this:HeroLockEvent()
end)
end
--添加事件监听(用于子类重写)
function RoleInfoPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Role.UpdateSkin, this.UpdateSkinShow)
Game.GlobalEvent:AddEvent(GameEvent.Role.UpdateRoleInfoPanel, this.ResolveUpdateHeroInfoData,self)
Game.GlobalEvent:AddEvent(GameEvent.Role.UpdateSodSoulLayout, this.UpdateHeroInfoData,self)
end
--移除事件监听(用于子类重写)
function RoleInfoPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Role.UpdateSkin,this.UpdateSkinShow)
Game.GlobalEvent:RemoveEvent(GameEvent.Role.UpdateRoleInfoPanel, this.ResolveUpdateHeroInfoData,self)
Game.GlobalEvent:RemoveEvent(GameEvent.Role.UpdateSodSoulLayout, this.UpdateHeroInfoData,self)
end
this.UpdateSkinShow = function()
if _CurPageIndex == RoleInfoPanelIndex.pifu then
this:OnPageTabChange(_CurPageIndex)
end
end
--界面打开时调用(用于子类重写)
function RoleInfoPanel:OnOpen(_curHeroData, _heroDatas,_isUpZhen,_index)
curHeroData, heroDatas,isUpZhen = _curHeroData, _heroDatas,_isUpZhen
if _index and _index > 0 then
_CurPageIndex = _index
else
_CurPageIndex = RoleInfoPanelIndex.qingbao
end
LogError("herodatas len=="..#_heroDatas)
end
-- 打开,重新打开时回调
function RoleInfoPanel:OnShow()
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.RoleInfo })
isClickLeftOrRightBtn = true
this.upLvEffect:SetActive(false)
for i = 1, #heroDatas do
if curHeroData.dynamicId == heroDatas[i].dynamicId then
index = i
end
end
teamHero = FormationManager.GetWuJinFormationHeroIds(FormationTypeDef.FORMATION_NORMAL)
this:UpdateLiveList()--加载当前 和 左右数据
if this.leftLiveObj and leftHeroData then
poolManager:UnLoadLive(this.leftLiveObj.name, this.leftLiveObj)
this.leftLiveObj = nil
end
if this.rightLiveObj and rightHeroData then
poolManager:UnLoadLive(this.rightLiveObj.name, this.rightLiveObj)
this.rightLiveObj = nil
end
if this.curLiveObj and curHeroData then
poolManager:UnLoadLive(this.curLiveObj.name, this.curLiveObj)
this.curLiveObj = nil
end
Util.ClearChild(this.curObj.transform)
Util.ClearChild(this.leftObj.transform)
Util.ClearChild(this.rightObj.transform)
this.leftLiveObj = HeroManager.LoadHerolive(leftHeroData,this.leftObj)
this.rightLiveObj = HeroManager.LoadHerolive(rightHeroData,this.rightObj)
this.curLiveObj = HeroManager.LoadHerolive(curHeroData,this.curObj)
local t=ConfigManager.TryGetAllConfigsDataByKey(ConfigName.Train,"HeroID",curHeroData.id)
this.trainingBtn:SetActive(CheckFunctionOpen(FUNCTION_OPEN_TYPE.Train) and #t~=0)
local leftToward=0
if leftHeroData.skinId and leftHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,leftHeroData.skinId)
if roleCon then
leftToward=roleCon.Toward
end
else
leftToward=leftHeroData.heroConfig.Toward
end
SetHEeroLiveToward(this.leftLiveObj,leftToward,leftHeroData.position)
local rightToward=0
if rightHeroData.skinId and rightHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,rightHeroData.skinId)
if roleCon then
rightToward=roleCon.Toward
end
else
rightToward=rightHeroData.heroConfig.Toward
end
SetHEeroLiveToward(this.rightLiveObj,rightToward,rightHeroData.position)
if this.curLiveObj then
this.dragView.gameObject:SetActive(true)
this.dragView:SetDragGO(this.curLiveObj)
else
this.dragView.gameObject:SetActive(false)
end
this:SetPanelBg(curHeroData.changeProId)
this:UpdateHeroInfoData()--刷新界面方法
end
--更新界面已存数据
function this:UpdateLiveList()
local leftIndex = (index - 1 > 0 and index - 1 or #heroDatas)
leftHeroData = heroDatas[leftIndex]
curHeroData = heroDatas[index]
local rightIndex = (index + 1 <= #heroDatas and index + 1 or 1)
rightHeroData = heroDatas[rightIndex]
end
function this:SetPanelBg(index)
for i = 1, 5 do
if index == i then
this.bgImageList[i]:SetActive(true)
else
this.bgImageList[i]:SetActive(false)
end
end
end
--右切换按钮点击
function this:RightBtnOnClick()
-- 英雄长按升级时不再进行切换操作
if this.PageList[1] and this.PageList[1].isPressed then
return
end
if isClickLeftOrRightBtn == false then
return
end
isClickLeftOrRightBtn = false
this.btnMask.gameObject:SetActive(true)
local oldIndexConfigData = heroDatas[index]
index = (index + 1 <= #heroDatas and index + 1 or 1)
curHeroData = heroDatas[index]
if this.leftLiveObj then
poolManager:UnLoadLive(leftHeroData.live, this.leftLiveObj)
this.leftLiveObj = nil
end
this.curLiveObj.transform:SetParent(this.leftObj.transform)
this.curLiveObj:GetComponent("SkeletonGraphic"):DOFade(0, 0.2)
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.position[1],oldIndexConfigData.position[2]), 0.5, false):SetEase(Ease.Linear)
this.rightLiveObj.transform:SetParent(this.curObj.transform)
this.rightLiveObj:GetComponent("RectTransform").anchoredPosition = Vector2.New(rightHeroData.position[1]+200,rightHeroData.position[2])
this.rightLiveObj:GetComponent("SkeletonGraphic"):DOFade(0, 0)
this.rightLiveObj:GetComponent("SkeletonGraphic"):DOFade(1, 0.3):SetDelay(0.2)
this.rightLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(rightHeroData.position[1],rightHeroData.position[2]), 0.3, false):SetDelay(0.2):OnComplete(function ()
this:UpdateLiveList()
if this.curLiveObj then
Log("Recycle:"..tostring(this.leftLiveObj))
poolManager:UnLoadLive(this.curLiveObj.name, this.curLiveObj)
this.curLiveObj = nil
end
Util.ClearChild(this.leftObj.transform)
this.leftLiveObj = HeroManager.LoadHerolive(leftHeroData,this.leftObj)
local leftToward=0
if leftHeroData.skinId and leftHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,leftHeroData.skinId)
if roleCon then
leftToward=roleCon.Toward
end
else
leftToward=leftHeroData.heroConfig.Toward
end
SetHEeroLiveToward(this.leftLiveObj,leftToward,leftHeroData.position)
this.curLiveObj = this.rightLiveObj
local rightToward=0
if rightHeroData.skinId and rightHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,rightHeroData.skinId)
if roleCon then
rightToward=roleCon.Toward
end
else
rightToward=rightHeroData.heroConfig.Toward
end
this.rightLiveObj = HeroManager.LoadHerolive(rightHeroData,this.rightObj)
SetHEeroLiveToward(this.rightLiveObj,rightToward,rightHeroData.position)
local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "idle", false)
this.rightBtn:GetComponent("Button").enabled = true
isClickLeftOrRightBtn = true
this:UpdateHeroInfoData()
this.btnMask.gameObject:SetActive(false)
end):SetEase(Ease.Linear)
this:SetPanelBg(curHeroData.changeProId)
end
--左切换按钮点击
function this:LeftBtnOnClick()
-- 英雄长按升级时不再进行切换操作
if this.PageList[1] and this.PageList[1].isPressed then
return
end
if isClickLeftOrRightBtn == false then
return
end
this.btnMask.gameObject:SetActive(true)
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
poolManager:UnLoadLive(this.rightLiveObj.name, this.rightLiveObj)
this.rightLiveObj = nil
end
this.curLiveObj.transform:SetParent(this.rightObj.transform)
this.curLiveObj:GetComponent("SkeletonGraphic"):DOFade(0, 0.2)
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.position[1],oldIndexConfigData.position[2]), 0.5, false):SetEase(Ease.Linear)
this.leftLiveObj.transform:SetParent(this.curObj.transform)
this.leftLiveObj:GetComponent("RectTransform").anchoredPosition = Vector2.New(leftHeroData.position[1]-200,leftHeroData.position[2])
this.leftLiveObj:GetComponent("SkeletonGraphic"):DOFade(0, 0)
this.leftLiveObj:GetComponent("SkeletonGraphic"):DOFade(1, 0.3):SetDelay(0.2)
this.leftLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(leftHeroData.position[1],leftHeroData.position[2]), 0.3, false):SetDelay(0.2):OnComplete(function ()
this:UpdateLiveList()
if this.curLiveObj then
poolManager:UnLoadLive(this.curLiveObj.name, this.curLiveObj)
this.curLiveObj = nil
end
Util.ClearChild(this.rightObj.transform)
this.rightLiveObj = HeroManager.LoadHerolive(rightHeroData,this.rightObj)
local rightToward=0
if rightHeroData.skinId and rightHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,rightHeroData.skinId)
if roleCon then
rightToward=roleCon.Toward
end
else
rightToward=rightHeroData.heroConfig.Toward
end
SetHEeroLiveToward(this.rightLiveObj,rightToward,rightHeroData.position)
this.curLiveObj = this.leftLiveObj
this.leftLiveObj = HeroManager.LoadHerolive(leftHeroData,this.leftObj)
local leftToward=0
if leftHeroData.skinId and leftHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,leftHeroData.skinId)
if roleCon then
leftToward=roleCon.Toward
end
else
leftToward=leftHeroData.heroConfig.Toward
end
SetHEeroLiveToward(this.leftLiveObj,leftToward,leftHeroData.position)
local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "idle", false)
this.leftBtn:GetComponent("Button").enabled = true
isClickLeftOrRightBtn = true
this:UpdateHeroInfoData()
this.btnMask.gameObject:SetActive(false)
end):SetEase(Ease.Linear)
this:SetPanelBg(curHeroData.changeProId)
end
function this:UpdateBtnList()
if not tabsList then
tabsList = {}
end
for k,v in pairs(tabsList) do
if IsNull(tabsList[k]) then
tabsList[k] = nil
else
tabsList[k].gameObject:SetActive(false)
end
end
for k,v in ipairs(tabs) do
if not tabsList[k] then
tabsList[k] = newObjToParent(this.btnPre,this.btnList)
end
if k == RoleInfoPanelIndex.pifu then
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.HeroSkin,"HeroId",curHeroData.id)
local HeoSkin = {}
for i = 1 ,#configs do
if not HeoSkin[configs[i].Type] and configs[i].Show == 1 then
HeoSkin[configs[i].Type] = configs[i]
end
end
if LengthOfTable(HeoSkin) > 1 then
tabsList[k].gameObject:SetActive(true)
else
tabsList[k].gameObject:SetActive(false)
end
elseif k == RoleInfoPanelIndex.jinjie then
if curHeroData.star < 10 then
tabsList[k].gameObject:SetActive(true)
else
tabsList[k].gameObject:SetActive(false)
end
elseif k == RoleInfoPanelIndex.juexing then
-- if curHeroData.star == 10 and curHeroData.heroConfig.MaxRank > curHeroData.star then
-- tabsList[k].gameObject:SetActive(true)
-- else
tabsList[k].gameObject:SetActive(false)
-- end
elseif k == RoleInfoPanelIndex.shenhun then
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.shenhun)
and curHeroData.heroConfig.IsSoulOpen == 1 and curHeroData.star > 10 then
tabsList[k].gameObject:SetActive(false)
else
tabsList[k].gameObject:SetActive(false)
end
elseif k == RoleInfoPanelIndex.feiSheng then
local isopen=ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.FlyUp)
if curHeroData.heroConfig.MaxRank >11 and curHeroData.star>=10 and curHeroData.star < 15 then
tabsList[k].gameObject:SetActive(true)
else
tabsList[k].gameObject:SetActive(false)
end
else
tabsList[k].gameObject:SetActive(true)
end
local img = Util.GetGameObject(tabsList[k], "img"):GetComponent("Image")
img.sprite = this.spLoader:LoadSprite(tabs[k].default)
local title = Util.GetGameObject(tabsList[k], "Text"):GetComponent("Text")
local redpot = Util.GetGameObject(tabsList[k], "redPoint")
local lock = Util.GetGameObject(tabsList[k], "lock")
-- local select=Util.GetGameObject(tabsList[k], "select")
-- select.gameObject:SetActive(k == _CurPageIndex)
lock.gameObject:SetActive(false)
title.text = GetCurLanguage() == 0 and v.title or ""..v.title..""
-- 判断是否需要检测红点
redpot:SetActive(false)
if k == RoleInfoPanelIndex.qingbao then
local upLvRedpoint = HeroManager.LvUpBtnRedPoint(curHeroData)
redpot.gameObject:SetActive(upLvRedpoint)
elseif k == RoleInfoPanelIndex.jinjie then
local upStarRedPointState = HeroManager.IsShowUpStarRedPoint(curHeroData)
redpot.gameObject:SetActive(upStarRedPointState)
elseif k == RoleInfoPanelIndex.juexing then
local upStarRedPointState = HeroManager.IsShowUpStarRedPoint(curHeroData)
redpot.gameObject:SetActive(upStarRedPointState)
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.RoleAwake) then
lock.gameObject:SetActive(false)
else
lock.gameObject:SetActive(true)
end
elseif k == RoleInfoPanelIndex.shenhun then
-- local upStarRedPointState = GodSoulManager.CheckRedPointGodSoul(curHeroData)
-- redpot.gameObject:SetActive(upStarRedPointState)
-- else
redpot.gameObject:SetActive(false)
elseif k== RoleInfoPanelIndex.feiSheng then
local upStarRedPointState = HeroManager.IsShowFlyUpRedPoint(curHeroData)
redpot.gameObject:SetActive(upStarRedPointState)
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.FlyUp) then
lock.gameObject:SetActive(false)
else
lock.gameObject:SetActive(true)
end
end
Util.AddOnceClick(tabsList[k],function()
if k == _CurPageIndex then
else
if k==RoleInfoPanelIndex.feiSheng and not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.FlyUp) then
local globe=ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,FUNCTION_OPEN_TYPE.FlyUp)
if globe then
PopupTipPanel.ShowTip("鸿蒙阵共鸣等级达到"..globe.OpenRules[2] .."级开启")
end
return
elseif k==RoleInfoPanelIndex.juexing and not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.RoleAwake) then
local globe=ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,FUNCTION_OPEN_TYPE.RoleAwake)
if globe then
PopupTipPanel.ShowTip("玩家等级达到"..globe.OpenRules[2] .."级开启")
end
return
end
this:SetSelectBtn(k)
this:OnPageTabChange(k)
end
end)
end
end
function this:CheckRedPointType(index,isShowRedPoint)
if tabsList[index] then
local redpot = Util.GetGameObject(tabsList[index], "redPoint")
redpot.gameObject:SetActive(isShowRedPoint)
end
end
-- 绑定数据
local _PageBindData = {}
--页签选中效果设置
function this:SetSelectBtn(index)
this.selectBtn.transform:SetParent(tabsList[index].transform)
this.selectBtn.transform.localScale = Vector3.one
this.selectBtn.transform.localPosition=Vector3.zero
-- this.selectBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("r_hero_xuanze_001")
-- Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text").text = GetCurLanguage() == 0 and tabs[index].title or ""..tabs[index].title..""--tabs[index].title--
end
-- tab改变事件
function this:OnPageTabChange(index)
this:ChangeCurentHeroSkinLive()
if this.PageList[_CurPageIndex] then
this.PageList[_CurPageIndex]:OnHide()
end
--神话传说隐藏角色名称信息
if index==5 then
this.nameInfo:SetActive(false)
else
this.nameInfo:SetActive(true)
end
_CurPageIndex = index
if not this.PageList[index] then
this.PageList[index] = SubUIManager.Open(tabPage[index],this.rolePanelOp.transform)
end
this.PageList[index]:OnShow()
this.PageList[index]:SetData(this.sortingOrder,this,curHeroData,isUpZhen,heroDatas)
end
function this:OnSortingOrderChange()
Util.AddParticleSortLayer(this.upLvEffect, this.sortingOrder - orginLayer)
orginLayer = this.sortingOrder
end
function this:UpdateHeroInfoData()
this:UpdateBtnList()
this.GodSoulBtn.gameObject:SetActive(CheckFunctionOpen(FUNCTION_OPEN_TYPE.shenhun) and curHeroData.heroConfig.IsSoulOpen)
this.potencyObj:SetActive(CheckFunctionOpen(FUNCTION_OPEN_TYPE.Potency))
this.giftBtn.gameObject:SetActive(CheckFunctionOpen(FUNCTION_OPEN_TYPE.Gift))
for k,v in pairs(this.PageList) do
v:OnHide()
end
-- LogError("_CurPageIndex==".._CurPageIndex)
if _CurPageIndex == RoleInfoPanelIndex.pifu then
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.HeroSkin,"HeroId",curHeroData.id)
local HeoSkin = {}
for i = 1 ,#configs do
if not HeoSkin[configs[i].Type] and configs[i].Show == 1 then
HeoSkin[configs[i].Type] = configs[i]
end
end
if LengthOfTable(HeoSkin) < 2 then
_CurPageIndex = RoleInfoPanelIndex.qingbao
end
elseif _CurPageIndex == RoleInfoPanelIndex.jinjie then
if (curHeroData.star == 10 and curHeroData.heroConfig.MaxRank > curHeroData.star and ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.RoleAwake))
or (not (curHeroData.star < 10)) then
_CurPageIndex = RoleInfoPanelIndex.qingbao
end
elseif _CurPageIndex == RoleInfoPanelIndex.juexing then
if (curHeroData.star < 10) or
not (curHeroData.star == 10 and curHeroData.heroConfig.MaxRank > curHeroData.star and ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.RoleAwake)) then
_CurPageIndex = RoleInfoPanelIndex.qingbao
end
elseif _CurPageIndex == RoleInfoPanelIndex.shenhun then
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.shenhun)
and curHeroData.heroConfig.IsSoulOpen == 1 and curHeroData.star > 10 then
_CurPageIndex = RoleInfoPanelIndex.qingbao
else
_CurPageIndex = RoleInfoPanelIndex.qingbao
end
elseif _CurPageIndex == RoleInfoPanelIndex.feiSheng then
if curHeroData.heroConfig.MaxRank <= 11 or curHeroData.star == 15 then
_CurPageIndex=RoleInfoPanelIndex.qingbao
else
LogError("*********/////////////////222222")
end
end
this:SetSelectBtn(_CurPageIndex)
this:OnPageTabChange(_CurPageIndex)
local EquipSignUnlock = ConfigManager.GetConfigData(ConfigName.GameSetting,1).EquipSignUnlock
if teamHero[curHeroData.dynamicId] then
isUpZhen = true
local isCanUpEquipTreasure
local config = ConfigManager.GetConfigData(ConfigName.SpecialConfig,40)
if config then
local limits = string.split(config.Value, "|")
if limits then
local heroConfig = curHeroData.heroConfig
local lvs = string.split(limits[1], "#")
local stars = string.split(limits[2], "#")
if PlayerManager.level >= tonumber(lvs[2]) and heroConfig ~= nil and heroConfig.MaxRank >= tonumber(stars[2]) then
isCanUpEquipTreasure = true
else
isCanUpEquipTreasure = false
end
else
isCanUpEquipTreasure = false
end
else
isCanUpEquipTreasure = false
end
this.equipBtnRedPoint:SetActive(#HeroManager.GetHeroIsUpEquip(curHeroData.dynamicId) > 0 or
(isCanUpEquipTreasure and #HeroManager.GetHeroIsUpTreasure(curHeroData.dynamicId,0) > 0) or
HeroManager.CheckIsUpTreasure(curHeroData.jewels[1],0) or
HeroManager.CheckIsUpTreasure(curHeroData.jewels[2],0) or
FaXiangManager.CheckIsCanUpFaXiang(curHeroData) or
FaXiangManager.CheckIsShowRed(curHeroData.faxiang[1],0) or
FaXiangManager.CheckIsShowRed(curHeroData.faxiang[2],0) )
this.talismanBtnRedPoint:SetActive(HeroManager.GetIsShowTalismanRedPoint(curHeroData))
this.giftRedPoint:SetActive(GiftManager.CheckRoleRedPointById(curHeroData.dynamicId))
this.soulPrintBtnRedPoint:SetActive(HeroManager.GetIsShowSoulPrintRedPoint(curHeroData))
this.godPrintBtnRedPoint:SetActive(HeroManager.GetIsShowGodPrintRedPoint(curHeroData))
this.potencyRedPoint:SetActive(HeroManager.CheckHeroPotencyRedPoint(curHeroData.dynamicId))
this.trainingBtnRedPoint:SetActive(HeroManager.RefreshRedShow(curHeroData))
else
isUpZhen = false
this.equipBtnRedPoint:SetActive(false)
this.talismanBtnRedPoint:SetActive(false)
this.soulPrintBtnRedPoint:SetActive(false)
this.godPrintBtnRedPoint:SetActive(false)
this.giftRedPoint:SetActive(false)
this.potencyRedPoint:SetActive(false)
this.trainingBtnRedPoint:SetActive(false)
end
--法宝按钮逻辑
this.talismanBtn.gameObject:SetActive(TalismanManager.CheckTalismanIsInConfig(curHeroData))
--this.talismanBtn.gameObject:SetActive(true)
if TalismanManager.CheckTalismanIsInConfig(curHeroData) then
talismanIsOpen = TalismanManager.GetCurHeroIsOpenTalisman(curHeroData)
this.talismanInfo.gameObject:SetActive(not talismanIsOpen)
Util.SetGray(this.talismanClick, not talismanIsOpen)
Util.GetGameObject(this.talismanClick.transform, "lock"):SetActive(not talismanIsOpen)
if not talismanIsOpen then
Util.GetGameObject(this.talismanClick, "lock/Text"):GetComponent("Text").text = TalismanManager.GetCurHeroIsOpenTalismanStr()
end
end
--魂印按钮逻辑
this.soulPrintBtn.transform.parent.gameObject:SetActive(ActTimeCtrlManager.IsQualifiled(87) and curHeroData.heroConfig.MaxRank >= EquipSignUnlock[2][2])
--神印按钮逻辑
local config = ConfigManager.GetConfigData(ConfigName.SpecialConfig,149)
if config then
local limits = string.split(config.Value, "#")
if limits then
this.godPrintBtn:SetActive(ActTimeCtrlManager.IsQualifiled(126)and curHeroData.heroConfig.MaxRank >= 6)
isOpenGod=curHeroData.star >= tonumber(limits[1])
Util.SetGray(this.godPrintBtn, not isOpenGod)
Util.GetGameObject(this.godPrintBtn, "lock"):SetActive(not isOpenGod)
if not isOpenGod then
Util.GetGameObject(this.godPrintBtn, "lock/Text"):GetComponent("Text").text = "六星解锁"
end
else
this.godPrintBtn:SetActive(false)
end
else
this.godPrintBtn:SetActive(false)
end
this:SetDragView()
local starSize = Vector2.New(60,60)
local star,starType = curHeroData.GetStar(1)
local starScale = -10
if starType == 3 then
starSize = Vector2.New(1.2,1.84)
starScale = 7
end
SetHeroStars(this.spLoader, this.starGrid, star,starType,starSize,starScale)--,Vector2.New(0.5,0.5))
Util.SetParticleSortLayer(this.starGrid,this.sortingOrder + 1)
--使得神魂特效同步------------------------
this.starGrid:SetActive(false)
this.starGrid:SetActive(true)
------------------------------------------
this.heroName.text = curHeroData.name
this.profession.sprite =this.spLoader:LoadSprite(GetProStrImageByProNum(curHeroData.changeProId))
this.posQuality.sprite=this.spLoader:LoadSprite(GetHeroQualityStr(curHeroData.heroConfig.Natural,curHeroData.star))
this.unlockImage:SetActive(curHeroData.lockState == 0)
this.lockImage:SetActive(curHeroData.lockState == 1)
if curHeroData.heroConfig.PropertyName==5 then
this.proChangeBtn:SetActive(false)
else
this.proChangeBtn:SetActive(false)
end
--魂印
soulPrintIsOpen=SoulPrintManager.GetSoulPrintIsOpen(curHeroData)
Util.GetGameObject(this.soulPrintBtn, "lock"):SetActive(not soulPrintIsOpen)
Util.SetGray(this.soulPrintBtn, not soulPrintIsOpen)
if not soulPrintIsOpen then
Util.GetGameObject(this.soulPrintBtn, "lock/Text"):GetComponent("Text").text= NumToSimplenessFont[EquipSignUnlock[2][2]]..Language[10535]
end
local WarPower = 0
if isUpZhen then
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL)
else
-- allAddProVal = HeroManager.CalculateHeroAllProValList(1,curHeroData.dynamicId,false)
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId)
end
this.force.text = WarPower
--神印按钮
local imprintId = PracticeManager.CheckHeroWearImprint(curHeroData.dynamicId)
if imprintId then
this.imprintBtn:SetActive(true)
this.imprintImg.sprite = this.spLoader:LoadSprite(GetResourcePath(XiuXianSkillConfig[imprintId].Icon))
Util.AddOnceClick(this.imprintBtn,function ()
UIManager.OpenPanel(UIName.GeneralInfoPopup,GENERALINFO_TYPE.Imprint,imprintId,curHeroData.id)
end)
else
this.imprintBtn:SetActive(false)
end
ForceRebuildLayout(this.starGrid.transform)
this.reStarBtn.gameObject:SetActive(curHeroData.star > 5 and curHeroData.star < 10)
local OpenPassiveSkillRules = curHeroData.star >= HeroManager.awakeNextStarIndex and curHeroData.heroConfig.Awaken or curHeroData.heroConfig.OpenPassiveSkillRules
OpenPassiveSkillRules=GetPassiveByMaxStar(curHeroData.heroConfig,OpenPassiveSkillRules)
local tianfuIcon
if curHeroData.star == 12 then
tianfuIcon = "r_tongyong_feisheng_icon1" --飞升一
elseif curHeroData.star == 13 then
tianfuIcon = "r_tongyong_feisheng_icon2" --飞升二
elseif curHeroData.star > 13 then
tianfuIcon = "r_tongyong_feisheng_icon3" --飞升三
elseif curHeroData.star == 11 then
tianfuIcon = "r_tongyong_tianfu_icon" --觉醒
elseif curHeroData.heroConfig.Natural <= 5 then
tianfuIcon = "r_tongyong_feisheng_icon" --9星以下
elseif curHeroData.heroConfig.Natural == 6 or curHeroData.heroConfig.Natural == 7 then
tianfuIcon = "r_tongyong_tianfu_icon" --10星
end
this.tianfuClick:GetComponent("Image").sprite = this.spLoader:LoadSprite("UI_hz_shenjiang_36")
LogError("breakid=="..curHeroData.breakId.." upstarid=="..curHeroData.upStarId)
if OpenPassiveSkillRules then
this.tianfuBtn:SetActive(true)
local openlists,compoundOpenNum,compoundNum,allUpStarOpenData = HeroManager.GetAllPassiveSkillIds(curHeroData.heroConfig,curHeroData.breakId,curHeroData.upStarId)
this.tianfuInfo.text = #openlists - compoundOpenNum .."/"..#OpenPassiveSkillRules - compoundNum
else
this.tianfuBtn:SetActive(false)
end
end
function this:ChangeCurentHeroSkinLive(herodata)
if this.curLiveObj then
poolManager:UnLoadLive(this.curLiveObj.name, this.curLiveObj)
this.curLiveObj = nil
end
if herodata then
this.curLiveObj=HeroManager.LoadHerolive1(herodata,this.curObj)
local toward=0
local pos=nil
if herodata.Type~=0 then
LogError("type=="..herodata.Type)
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,herodata.Type)
if roleCon then
LogError("type====="..herodata.Type)
toward=roleCon.Toward
end
else
toward=herodata.heroConfig.Toward
end
SetHEeroLiveToward(this.curLiveObj,toward,herodata.Position)
-- 临时保存皮肤位置
curHeroPosition = herodata.Position
else
local WarPower
if isUpZhen then
-- local formationList = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_NORMAL)
-- local allHeroTeamAddProVal = HeroManager.GetAllHeroTeamAddProVal(formationList.teamHeroInfos,curHeroData.dynamicId)
-- allAddProVal = HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false,nil,nil,true,allHeroTeamAddProVal)
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_NORMAL)
else
WarPower = HeroPowerManager.GetHeroPower(curHeroData.dynamicId)
-- allAddProVal = HeroManager.CalculateHeroAllProValList(1,curHeroData.dynamicId,false)
end
this.force.text = WarPower
local toward=0
if curHeroData.skinId and curHeroData.skinId~=0 then
local roleCon=ConfigManager.TryGetConfigData(ConfigName.RoleConfig,curHeroData.skinId)
if roleCon then
toward=roleCon.Toward
end
else
toward=curHeroData.heroConfig.Toward
end
this.curLiveObj=HeroManager.LoadHerolive(curHeroData,this.curObj)
SetHEeroLiveToward(this.curLiveObj,toward,curHeroData.position)
-- 清空临时保存的皮肤位置
curHeroPosition = nil
end
this:SetDragView()
end
function this:SetDragView()
if this.curLiveObj then
this.dragView.gameObject:SetActive(true)
this.dragView:SetDragGO(this.curLiveObj)
else
this.dragView.gameObject:SetActive(false)
end
end
local beginV3
local endV3
local distance
function RoleInfoPanel:OnBeginDrag(Pointgo, data)
beginV3=this.curLiveObj.transform.anchoredPosition
end
function RoleInfoPanel:OnDrag(Pointgo, data)
distance=Vector2.Distance(beginV3,this.curLiveObj.transform.anchoredPosition)
end
function RoleInfoPanel:OnEndDrag(Pointgo, data)
endV3=this.curLiveObj.transform.anchoredPosition
if distance>250 and endV3.x<0 then
this:RightBtnOnClick()
elseif distance>250 and endV3.x>0 then
this:LeftBtnOnClick()
else
local pos = curHeroPosition or curHeroData.position
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(pos[1], pos[2]), 0.5, false):SetEase(Ease.Linear)
end
distance=0
end
--界面关闭时调用(用于子类重写)
function RoleInfoPanel:OnClose()
if this.leftLiveObj and leftHeroData then
poolManager:UnLoadLive(this.leftLiveObj.name, this.leftLiveObj)
this.leftLiveObj = nil
end
if this.rightLiveObj and rightHeroData then
poolManager:UnLoadLive(this.rightLiveObj.name, this.rightLiveObj)
this.rightLiveObj = nil
end
if this.curLiveObj and curHeroData then
poolManager:UnLoadLive(this.curLiveObj.name, this.curLiveObj)
this.curLiveObj = nil
end
this.leftBtn:GetComponent("Button").enabled = true
this.rightBtn:GetComponent("Button").enabled = true
Util.ClearChild(this.curObj.transform)
Util.ClearChild(this.leftObj.transform)
Util.ClearChild(this.rightObj.transform)
for k,v in pairs(this.PageList) do
v:OnHide()
end
this.btnMask.gameObject:SetActive(false)
end
--界面销毁时调用(用于子类重写)
function RoleInfoPanel:OnDestroy()
this.spLoader:Destroy()
tabsList = {}
SubUIManager.Close(this.UpView)
-- 这里管理全部子界面的销毁,保证子界面生命周期完整
for k,v in pairs(this.PageList) do
SubUIManager.Close(v)
end
isProChange=false
end
--跳转显示新手提示圈
function this.ShowGuideGo(type)--1 升级突破 2 进阶
if type == 1 then
JumpManager.ShowGuide(UIName.RoleInfoPanel,this.upLvBtn)
elseif type == 2 then
-- 我要变强跳转过来显示小手
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:HeroLockEvent()
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(Language[11820])
elseif curHeroData.lockState == 0 then
PopupTipPanel.ShowTip(Language[11741])
end
HeroManager.UpdateSingleHeroLockState(curHeroData.dynamicId,curHeroData.lockState)
this.unlockImage:SetActive(curHeroData.lockState == 0)
this.lockImage:SetActive(curHeroData.lockState == 1)
for i, v in pairs(heroDatas) do
if curHeroData == v then
v.lockState = curHeroData.lockState
end
end
end)
end
function this:ResolveUpdateHeroInfoData()
curHeroData = HeroManager.GetSingleHeroData(curHeroData.dynamicId)
for i = 1, #heroDatas do
if curHeroData.dynamicId == heroDatas[i].dynamicId then
heroDatas[i] = curHeroData
end
end
this:UpdateHeroInfoData()--刷新界面方法
if isUpZhen then
FormationManager.UserPowerChanged()
end
end
return this