miduo_client/Assets/ManagedResources/~Lua/Modules/HandBook/HandBookHeroInfoPanel.lua

584 lines
27 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden 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")
HandBookHeroInfoPanel = Inherit(BasePanel)
local this = HandBookHeroInfoPanel
local heroConFigData
local leftHeroData
local rightHeroData
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
local heroLevelConfig = ConfigManager.GetConfig(ConfigName.HeroLevelConfig)
local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig)
local allAddProVal = {}
local isClickLeftOrRightBtn = true
local index=0
local leftIndex=0
local rightIndex=0
local starType = 1
local type = 1
local _leftStar=0
local _curStar=0
local _rightStar=0
local breakId,upStarId
--初始化组件(用于子类重写)
function HandBookHeroInfoPanel:InitComponent()
self.btnBack = Util.GetGameObject(self.transform, "btnBack")
this.bgImageList = {}
for i = 1, 4 do
this.bgImageList[i] = Util.GetGameObject(self.transform, "bg/di ("..i..")")
end
self.curObj= Util.GetGameObject(self.transform, "curObj")
self.leftObj= Util.GetGameObject(self.transform, "leftObj")
self.rightObj= Util.GetGameObject(self.transform, "rightObj")
self.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject")
self.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject")
self.dragView = SubUIManager.Open(SubUIConfig.DragView, self.gameObject.transform)
self.dragView.transform:SetSiblingIndex(1)
self.starGrid = Util.GetGameObject(self.transform, "info/sartAndLvLayout")
self.heroName = Util.GetGameObject(self.transform, "info/nameAndPossLayout/heroName"):GetComponent("Text")
self.profession = Util.GetGameObject(self.transform, "info/nameAndPossLayout/proImage/proImage"):GetComponent("Image")
--定位描述
self.posBgImage=Util.GetGameObject(self.transform,"pos"):GetComponent("Image")
self.posImage=Util.GetGameObject(self.transform,"pos/posImage"):GetComponent("Image")
self.posText=Util.GetGameObject(self.transform,"pos/posText"):GetComponent("Text")
--详情
Util.GetGameObject(self.transform,"roleInfoLayout/pro/atk/proName"):GetComponent("Text").text = propertyConfig[2].Info
Util.GetGameObject(self.transform,"roleInfoLayout/pro/hp/proName"):GetComponent("Text").text = propertyConfig[1].Info
Util.GetGameObject(self.transform,"roleInfoLayout/pro/phyDef/proName"):GetComponent("Text").text = propertyConfig[3].Info
Util.GetGameObject(self.transform,"roleInfoLayout/pro/magDef/proName"):GetComponent("Text").text = propertyConfig[4].Info
-- Util.GetGameObject(self.transform,"roleInfoLayout/pro/speed/proName"):GetComponent("Text").text = propertyConfig[5].Info
self.atkPro=Util.GetGameObject(self.transform,"roleInfoLayout/pro/atk/proValue"):GetComponent("Text")
self.hpPro=Util.GetGameObject(self.transform,"roleInfoLayout/pro/hp/proValue"):GetComponent("Text")
self.phyDef=Util.GetGameObject(self.transform,"roleInfoLayout/pro/phyDef/proValue"):GetComponent("Text")
self.magDef=Util.GetGameObject(self.transform,"roleInfoLayout/pro/magDef/proValue"):GetComponent("Text")
-- self.speed=Util.GetGameObject(self.transform,"roleInfoLayout/pro/speed/proValue"):GetComponent("Text")
self.skillGrid=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill")
self.selsectSkillImage=Util.GetGameObject(self.transform,"roleInfoLayout/selsectSkillImage")
self.allProButton=Util.GetGameObject(self.transform,"roleInfoLayout/allProButton")
--定位
-- self.location=Util.GetGameObject(self.transform,"roleInfoLayout/Location")
-- self.infoText=Util.GetGameObject(self.location,"Info"):GetComponent("Text")
-- self.radar = Util.GetGameObject(self.location, "ProRadarImage/Radar"):GetComponent("RadarChart")
self.skillName=Util.GetGameObject(self.transform,"roleInfoLayout/skillName")
self.skillLine=Util.GetGameObject(self.transform,"roleInfoLayout/skillLine")
self.talismanBtn=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn")
-- self.talismanFrame=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn"):GetComponent("Image")
self.talismanIcon=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn/Icon"):GetComponent("Image")
-- self.talismanInfo=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanInfo")
self.btnStart = Util.GetGameObject(self.transform, "btnList/btnStart")
self.btnMaxStar = Util.GetGameObject(self.transform, "btnList/btnMaxStar")
self.btnMaxStar.gameObject:SetActive(false)
self.btnSkin = Util.GetGameObject(self.transform, "btnList/btnSkin")
self.selectBtn = Util.GetGameObject(self.transform, "btnList/selectBtn")
self.roleInfoLayout = Util.GetGameObject(self.transform,"roleInfoLayout")
self.roleStoryLayout = Util.GetGameObject(self.transform,"roleStoryLayout")
--传记
self.btnStory = Util.GetGameObject(self.transform, "btnList/btnStory")
self.infoTextStory = Util.GetGameObject(self.transform,"roleStoryLayout/infoBg/infoRect/infoText"):GetComponent("Text")
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.talentBtn=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/talentBtn")
this.talentProgress=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/talentBtn/progress"):GetComponent("Text")
this.posBtn=Util.GetGameObject(self.gameObject,"posBtn")--定位按钮
end
--绑定事件(用于子类重写)
function HandBookHeroInfoPanel:BindEvent()
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.allProButton, function()
UIManager.OpenPanel(UIName.RoleProInfoPopup,allAddProVal,heroConFigData,false)
end)
Util.AddClick(self.btnStart, function()
self:SetSelectBtn(self.btnStart, Language[11097])
if _curStar and _curStar>5 then
self:OnShowHeroData(1,2,_curStar)
else
self:OnShowHeroData(1,1,heroConFigData.Star)
end
end)
Util.AddClick(self.btnMaxStar, function()
self:SetSelectBtn(self.btnMaxStar, Language[11098])
if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then
self:OnShowHeroData(1,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1])
else
self:OnShowHeroData(1,2,heroConFigData.Star)
end
end)
Util.AddClick(self.btnStory, function()
self:SetSelectBtn(self.btnStory, Language[11099])
self:OnShowHeroData(2,1,heroConFigData.Star)
end)
Util.AddClick(self.btnSkin, function()
PopupTipPanel.ShowTip(Language[11100])
end)
Util.AddClick(this.leftBtn, function()
self:LeftBtnOnClick()
end)
Util.AddClick(this.rightBtn, function()
self:RightBtnOnClick()
end)
Util.AddClick(this.posBtn, function()
UIManager.OpenPanel(UIName.RolePosInfoPopup,heroConFigData)
end)
end
local heroDatas = {}
--界面打开时调用(用于子类重写) 第一个参数 英雄数据 第二个参数 属性id
function HandBookHeroInfoPanel:OnOpen(...)
local temp={...}
heroDatas = {}
--[[for id, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.HeroConfig)) do
if (temp[2]==0 or v.PropertyName == temp[2]) then
table.insert(heroDatas,v)
end
end
self:SortHeroNatural(heroDatas)]]
heroConFigData = temp[1]
if(temp[3]) then
_curStar=temp[3]
end
heroDatas=PlayerManager.heroHandBookListData[_curStar]
for n,m in ipairs(heroDatas) do
if heroConFigData.Id==m.Id then
index=n
else
index=1
end
end
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function HandBookHeroInfoPanel:OnShow()
isClickLeftOrRightBtn = true
for i = 1, #heroDatas do
if heroConFigData.Id == heroDatas[i].Id then
index = i
end
end
self:UpdateLiveList()
this.leftLiveObj = this:LoadHerolive(leftHeroData,self.leftObj)
this.rightLiveObj = this:LoadHerolive(rightHeroData,self.rightObj)
this.curLiveObj = this:LoadHerolive(heroConFigData,self.curObj)
if _curStar and _curStar > 5 then
self:OnShowHeroData(1,2,_curStar)
else
self:OnShowHeroData(1,1,heroConFigData.Star)
end
self:SetSelectBtn(self.btnStart, Language[11097])
--self.curLiveObj = self:LoadHerolive(heroConFigData,self.curObj)
self.dragView:SetDragGO(this.curLiveObj)
this.SetPanelBg(heroConFigData)
end
--展示英雄信息 第一个参数1 属性面板 2 故事面板 第二个参数 1初始 2 6星和10星 第三个参数 显示星级
function HandBookHeroInfoPanel:OnShowHeroData(_type,_starType,_star)
self.dragView:SetDragGO(this.curLiveObj)
type = _type
self.roleInfoLayout:SetActive( _type == 1)
self.roleStoryLayout:SetActive( _type == 2)
local starSize = Vector2.New(60,60)
SetHeroStars(self.starGrid, _star,2,starSize,-10,Vector2.New(0.5,0.5))
self.heroName.text = heroConFigData.ReadingName
self.profession.sprite =Util.LoadSprite(GetProStrImageByProNum(heroConFigData.PropertyName))
--定位描述相关
self.posBgImage.sprite=Util.LoadSprite(GetHeroPosBgStr(heroConFigData.Profession))
self.posImage.sprite=Util.LoadSprite(GetHeroPosStr(heroConFigData.Profession))
self.posText.text=heroConFigData.HeroLocation
--计算面板属性
allAddProVal=self:CalculateHeroAllProValList(_starType,_star)
self.atkPro.text=allAddProVal[HeroProType.Attack]
self.hpPro.text=allAddProVal[HeroProType.Hp]
self.phyDef.text=allAddProVal[HeroProType.PhysicalDefence]
self.magDef.text=allAddProVal[HeroProType.MagicDefence]
--天赋
this.talentBtn:SetActive(heroConFigData.OpenPassiveSkillRules ~= nil)
local talentBtnImage = _star == HeroManager.awakeNextStarIndex and "r_hero_tianfu2" or "r_hero_tianfu1"
this.talentBtn:GetComponent("Image").sprite = Util.LoadSprite(talentBtnImage)
local OpenPassiveSkillRules = _star == HeroManager.awakeNextStarIndex and heroConFigData.Awaken or heroConFigData.OpenPassiveSkillRules
if OpenPassiveSkillRules then
local openlists,compoundOpenNum,compoundNum = HeroManager.GetAllPassiveSkillIds(heroConFigData,breakId,upStarId)
this.talentProgress.text = #openlists - compoundOpenNum .."/"..#OpenPassiveSkillRules - compoundNum
end
--技能点击特殊处理
self.selsectSkillImage:SetActive(false)
self.skillGrid:GetComponent("Canvas").sortingOrder = self.sortingOrder + 1
local triggerCallBack
local skillList = HeroManager.GetCurHeroSidAndCurStarAllSkillDatas(heroConFigData.Id,_star)
for i = 1, self.skillGrid.transform.childCount do
self.skillGrid.transform:GetChild(i-1).gameObject:SetActive(false)
end
for i = 1, #skillList do
if skillList[i] and skillList[i].skillConfig and skillList[i].skillConfig.Name then
local go = self.skillGrid.transform:GetChild(i-1).gameObject
go:SetActive(true)
Util.GetGameObject(go.transform,"s"):GetComponent("Image").sprite=Util.LoadSprite(GetResourcePath(skillList[i].skillConfig.Icon))
Util.GetGameObject(go.transform,"s/Text"):GetComponent("Text").text=skillList[i].skillConfig.Name--Language[10470].. 1(skillList[i].skillConfig.Id % 10)
Util.GetGameObject(go.transform,"SkillTypeImage"):GetComponent("Image").sprite=Util.LoadSprite(GetSkillType(skillList[i]))
Util.AddOnceClick(Util.GetGameObject(go.transform,"s"), function()
if Game.GlobalEvent:HasEvent(GameEvent.UI.OnClose, triggerCallBack) then
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack)
end
self.selsectSkillImage:SetActive(true)
self.selsectSkillImage.transform.position=Util.GetGameObject(go.transform,"s").transform.position
local skillData = {}
skillData.skillConfig = skillList[i].skillConfig
local maxLv= HeroManager.GetHeroSkillMaxLevel(heroConFigData.Id,skillData.skillConfig.Type)
local panel = UIManager.OpenPanel(UIName.SkillInfoPopup,skillData,1,10,maxLv,i)
self.skillGrid:GetComponent("Canvas").sortingOrder = panel.sortingOrder + 1
triggerCallBack = function (panelType, p)
if panelType == UIName.SkillInfoPopup and panel == p then --监听到SkillInfoPopup关闭把层级设回去
self.skillGrid:GetComponent("Canvas").sortingOrder = self.sortingOrder + 1
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack)
self.selsectSkillImage:SetActive(false)
end
end
Game.GlobalEvent:AddEvent(GameEvent.UI.OnClose, triggerCallBack)
end)
end
end
--定位
this.posBtn.gameObject:SetActive(heroConFigData.ShowHeroLocation==1)
-- self.infoText.text = heroConFigData.HeroLocation
-- self.radar:SetEdges({heroConFigData.AttackScale/100,heroConFigData.DefenseScale/100,heroConFigData.AssistScale/100})
-- self.radar.color = Color.New(238/255,211/255,156/255,102/255)
-- PlayUIAnim(self.location,function ()
--Log("end!!!!!")
-- end)
--技能 布局变动
self.skillLine.gameObject:SetActive(not (heroConFigData.OpenPassiveSkillRules == nil and heroConFigData.EquipTalismana==nil))
if heroConFigData.OpenPassiveSkillRules == nil and heroConFigData.EquipTalismana==nil then
Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill"):GetComponent("LayoutElement").minWidth=500
Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill"):GetComponent("GridLayoutGroup").startAxis=0
self.skillName.transform:DOAnchorPos(Vector3.New(442,308,0),0)
else
Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill"):GetComponent("LayoutElement").minWidth=150
Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill"):GetComponent("GridLayoutGroup").startAxis=1
self.skillName.transform:DOAnchorPos(Vector3.New(274,308,0),0)
end
--法宝
self.talismanBtn.gameObject:SetActive(heroConFigData.EquipTalismana~=nil)
-- self.talismanInfo.gameObject:SetActive(heroConFigData.EquipTalismana==nil)
if heroConFigData.EquipTalismana~=nil then
-- self.talismanFrame.sprite=Util.LoadSprite(TalismanBubble[itemConfig[heroConFigData.EquipTalismana[2]].Quantity])
self.talismanIcon.sprite = Util.LoadSprite(GetResourcePath(itemConfig[heroConFigData.EquipTalismana[2]].ResourceID))
end
--法宝
Util.AddOnceClick(self.talismanBtn.gameObject,function()
if starType==1 then
UIManager.OpenPanel(UIName.TalismanInfoPopup,heroConFigData,1,1)
elseif starType==2 then
UIManager.OpenPanel(UIName.TalismanInfoPopup,heroConFigData,1,75)
end
end)
--传记
Util.GetGameObject(self.transform,"roleStoryLayout/infoBg/infoRect/infoText"):GetComponent("RectTransform").anchoredPosition = Vector2.New(-2, 0)
local stroyStr = string.gsub(heroConFigData.HeroStory,"#","\n")
self.infoTextStory.text = string.gsub(stroyStr,"|","  ")--传记
end
--根据界面数据加载动态立绘
function HandBookHeroInfoPanel:LoadHerolive(_heroData, _objPoint)
--TODO:动态加载立绘
local testLive = poolManager:LoadLive(GetResourcePath(_heroData.Live), _objPoint.transform,
Vector3.one * _heroData.Scale, Vector3.New(_heroData.Position[1], _heroData.Position[2], 0))
local SkeletonGraphic = testLive:GetComponent("SkeletonGraphic")
local idle = function() SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end
SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idle
poolManager:SetLiveClearCall(_heroData.Live, testLive, function ()
SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idle
end)
return testLive
end
--计算英雄属性 1 初始 2 指定星级 _starNum星级变化
function HandBookHeroInfoPanel:CalculateHeroAllProValList(_starType,_starNum)
local allAddProVal = {}
for i, v in ConfigPairs(propertyConfig) do
allAddProVal[i] = 0
end
local heroRankupConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.HeroRankupConfig, "Star", heroConFigData.Star, "OpenStar", _starNum)
local curLvNum=1
breakId = 0
upStarId = 0
if _starType == 2 then
--等级
curLvNum = heroRankupConfig.OpenLevel
--解锁天赋
for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.HeroRankupConfig)) do
if v.OpenStar == _starNum and v.Star==heroConFigData.Star then
if v.Type == 1 then
breakId = v.Id
end
if v.Type == 2 then
upStarId = v.Id
end
end
end
if breakId==0 then
breakId=6
end
end
local allOpenPassiveSkillIds = HeroManager.GetAllPassiveSkillIds(heroConFigData, breakId, upStarId)
--单体加成 --单体等级限制加成 --团体加成 --减乘
local singleHeroProVal, lvProVal, allHeroProVal, specialProVal =
HeroManager.CalculatePassiveSkillsValList(WarPowerType.Hero, allOpenPassiveSkillIds)
HeroManager.DoubleTableCompound(allAddProVal, singleHeroProVal)
HeroManager.DoubleTableCompound(allAddProVal, lvProVal)
HeroManager.DoubleTableCompound(allAddProVal, allHeroProVal)
for k, v in pairs(allAddProVal) do
allAddProVal[k] = allAddProVal[k] / 100
end
allAddProVal[HeroProType.Attack]=HeroManager.CalculateProVal(heroConFigData.Attack, curLvNum, breakId,upStarId,HeroProType.Attack) + allAddProVal[HeroProType.Attack]
allAddProVal[HeroProType.Hp]=HeroManager.CalculateProVal(heroConFigData.Hp, curLvNum, breakId,upStarId,HeroProType.Hp) + allAddProVal[HeroProType.Hp]
allAddProVal[HeroProType.PhysicalDefence]=HeroManager.CalculateProVal(heroConFigData.PhysicalDefence, curLvNum, breakId,upStarId,HeroProType.PhysicalDefence) + allAddProVal[HeroProType.PhysicalDefence]
allAddProVal[HeroProType.MagicDefence]=HeroManager.CalculateProVal(heroConFigData.MagicDefence, curLvNum, breakId,upStarId,HeroProType.MagicDefence) + allAddProVal[HeroProType.MagicDefence]
--allAddProVal[HeroProType.Speed]= math.floor(((curSpeedFormulaData[1] * math.pow(breakId, 3) + curSpeedFormulaData[2] * math.pow(breakId, 2) + curSpeedFormulaData[3] * breakId + curSpeedFormulaData[4]) + heroConFigData.Speed * speedNum))
--for i = 1, #heroConFigData.SecondaryFactor do
-- local proId = heroConFigData.SecondaryFactor[i][1]
-- if propertyConfig[proId].Style ==2 then
-- allAddProVal[heroConFigData.SecondaryFactor[i][1]] = heroConFigData.SecondaryFactor[i][2]/10000
-- else
-- allAddProVal[heroConFigData.SecondaryFactor[i][1]] = heroConFigData.SecondaryFactor[i][2]
-- end
--end
Util.AddOnceClick(this.talentBtn,function()
UIManager.OpenPanel(UIName.RoleTalentPopup,heroConFigData,breakId,upStarId)
end)
for key, value in pairs(allAddProVal) do
allAddProVal[key] = math.floor(value)
end
return allAddProVal
end
--页签选中效果设置
function HandBookHeroInfoPanel:SetSelectBtn(_btn, btnText)
self.selectBtn.transform:SetParent(_btn.transform)
self.selectBtn.transform.localScale = Vector3.one
self.selectBtn.transform.localPosition=Vector3.zero
Util.GetGameObject(self.selectBtn.transform, "Text"):GetComponent("Text").text = btnText
end
function HandBookHeroInfoPanel:UpdateLiveList()
local starIndex = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.RoleAwake) and 11 or 10
if index - 1 > 0 then
_leftStar = _curStar
leftIndex = index - 1
leftHeroData=heroDatas[leftIndex]
else
if _curStar==starIndex then
_leftStar = 1
elseif _curStar==6 then
_leftStar = 10
else
_leftStar = _curStar+1
end
leftIndex=#PlayerManager.heroHandBookListData[_leftStar]
leftHeroData=PlayerManager.heroHandBookListData[_leftStar][leftIndex]
end
if index + 1 <= #heroDatas then
_rightStar = _curStar
rightIndex = index + 1
rightHeroData=heroDatas[rightIndex]
else
if _curStar==10 then
_rightStar = 6
elseif _curStar==1 then
_rightStar = starIndex
else
_rightStar = _curStar - 1
end
rightIndex = 1
rightHeroData=PlayerManager.heroHandBookListData[_rightStar][rightIndex]
end
end
--右切换按钮点击
function HandBookHeroInfoPanel:RightBtnOnClick()
if isClickLeftOrRightBtn == false then
return
end
isClickLeftOrRightBtn = false
self.rightBtn:GetComponent("Button").enabled = false
local oldIndexConfigData = heroDatas[index]
index =rightIndex
if _curStar ~= _rightStar then
_curStar = _rightStar
heroDatas = PlayerManager.heroHandBookListData[_curStar]
end
heroConFigData = heroDatas[index]
this.SetPanelBg(heroConFigData)
if this.leftLiveObj then
poolManager:UnLoadLive(GetResourcePath(leftHeroData.Live), this.leftLiveObj)
this.leftLiveObj = nil
end
this.curLiveObj.transform:SetParent(self.leftObj.transform)
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.Position[1],oldIndexConfigData.Position[2]), 0.5, false):SetEase(Ease.Linear)
this.rightLiveObj.transform:SetParent(self.curObj.transform)
this.rightLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(rightHeroData.Position[1],rightHeroData.Position[2]), 0.5, false):OnComplete(function ()
this:UpdateLiveList()
this.leftLiveObj = this.curLiveObj
this.curLiveObj = this.rightLiveObj
this.rightLiveObj = this:LoadHerolive(rightHeroData,self.rightObj)
if _curStar and _curStar > 5 then
--[[ if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then
self:OnShowHeroData(type,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1])
else]]
self:OnShowHeroData(type,2,_curStar)
--end
else
self:OnShowHeroData(type,1,heroConFigData.Star)
end
local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "touch", false)
this.rightBtn:GetComponent("Button").enabled = true
isClickLeftOrRightBtn = true
end):SetEase(Ease.Linear)
end
--左切换按钮点击
function HandBookHeroInfoPanel:LeftBtnOnClick()
if isClickLeftOrRightBtn == false then
return
end
isClickLeftOrRightBtn = false
self.leftBtn:GetComponent("Button").enabled = false
local oldIndexConfigData = heroDatas[index]
index =leftIndex
if _curStar~= _leftStar then
_curStar = _leftStar
heroDatas = PlayerManager.heroHandBookListData[_curStar]
end
heroConFigData = heroDatas[index]
this.SetPanelBg(heroConFigData)
if this.rightLiveObj then
poolManager:UnLoadLive(GetResourcePath(rightHeroData.Live), this.rightLiveObj)
this.rightLiveObj = nil
end
this.curLiveObj.transform:SetParent(self.rightObj.transform)
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.Position[1],oldIndexConfigData.Position[2]), 0.5, false):SetEase(Ease.Linear)
this.leftLiveObj.transform:SetParent(self.curObj.transform)
this.leftLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(leftHeroData.Position[1],leftHeroData.Position[2]), 0.5, false):OnComplete(function ()
this:UpdateLiveList()
this.rightLiveObj = this.curLiveObj
this.curLiveObj = this.leftLiveObj
this.leftLiveObj = this:LoadHerolive(leftHeroData,self.leftObj)
if _curStar and _curStar > 5 then
--[[if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then
self:OnShowHeroData(type,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1])
else]]
self:OnShowHeroData(type,2,_curStar)
--end
else
self:OnShowHeroData(type,1,heroConFigData.Star)
end
local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic")
SkeletonGraphic.AnimationState:SetAnimation(0, "touch", false)
this.leftBtn:GetComponent("Button").enabled = true
isClickLeftOrRightBtn = true
end):SetEase(Ease.Linear)
end
--手指滑动
local beginV3
local endV3
local distance
function HandBookHeroInfoPanel:OnBeginDrag(Pointgo, data)
beginV3=this.curLiveObj.transform.anchoredPosition
end
function HandBookHeroInfoPanel:OnDrag(Pointgo, data)
distance=Vector2.Distance(beginV3,this.curLiveObj.transform.anchoredPosition)
end
function HandBookHeroInfoPanel: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
this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(heroConFigData.Position[1],heroConFigData.Position[2]), 0.5, false):SetEase(Ease.Linear)
end
distance=0
end
--界面关闭时调用(用于子类重写)
function HandBookHeroInfoPanel:OnClose()
if this.leftLiveObj then
poolManager:UnLoadLive(GetResourcePath(leftHeroData.Live), this.leftLiveObj)
this.leftLiveObj = nil
end
if this.rightLiveObj then
poolManager:UnLoadLive(GetResourcePath(rightHeroData.Live), this.rightLiveObj)
this.rightLiveObj = nil
end
if this.curLiveObj then
poolManager:UnLoadLive(GetResourcePath(heroConFigData.Live), this.curLiveObj)
this.curLiveObj = nil
end
this.leftBtn:GetComponent("Button").enabled = true
this.rightBtn:GetComponent("Button").enabled = true
end
function HandBookHeroInfoPanel:SortHeroNatural(heroList)
table.sort(heroList, function(a, b)
if a.Star == b.Star then
if a.Natural == b.Natural then
return a.Id < b.Id
else
return a.Natural > b.Natural
end
else
return a.Star > b.Star
end
end)
end
function this.SetPanelBg(heroData)
for i = 1, 4 do
if heroData.PropertyName == i then
this.bgImageList[i]:SetActive(true)
else
this.bgImageList[i]:SetActive(false)
end
end
end
--界面销毁时调用(用于子类重写)
function HandBookHeroInfoPanel:OnDestroy()
SubUIManager.Close(SubUIConfig.DragView, self.dragView)
end
return HandBookHeroInfoPanel