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

1128 lines
50 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

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

require("Base/BasePanel")
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_shenjiang_33")
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_zhonghe05_119")
this.potencyRedPoint=Util.GetGameObject(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.GetAllEquipDataNoBless()
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(#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 "<size=45>"..v.title.."</size>"
-- 判断是否需要检测红点
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 "<size=45>"..tabs[index].title.."</size>"--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