546 lines
25 KiB
Lua
546 lines
25 KiB
Lua
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
|
||
--初始化组件(用于子类重写)
|
||
function HandBookHeroInfoPanel:InitComponent()
|
||
|
||
self.btnBack = Util.GetGameObject(self.transform, "btnBack")
|
||
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/starGrid")
|
||
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[12158])
|
||
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)
|
||
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)
|
||
SetHeroStars(self.starGrid, _star)
|
||
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
|
||
|
||
this.talentBtn:SetActive(heroConFigData.OpenPassiveSkillRules ~= nil)
|
||
--self.quality.sprite=Util.LoadSprite(GetQualityIconByQualityNumer(heroConFigData.Natural))
|
||
--计算面板属性
|
||
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]
|
||
--技能点击特殊处理
|
||
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, "LimitStar", _starNum)
|
||
local curLvNum=1
|
||
local breakId = 0
|
||
local 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
|
||
allAddProVal[HeroProType.Attack]=HeroManager.CalculateProVal(heroConFigData.Attack, curLvNum, breakId,upStarId,HeroProType.Attack)
|
||
allAddProVal[HeroProType.Hp]=HeroManager.CalculateProVal(heroConFigData.Hp, curLvNum, breakId,upStarId,HeroProType.Hp)
|
||
allAddProVal[HeroProType.PhysicalDefence]=HeroManager.CalculateProVal(heroConFigData.PhysicalDefence, curLvNum, breakId,upStarId,HeroProType.PhysicalDefence)
|
||
allAddProVal[HeroProType.MagicDefence]=HeroManager.CalculateProVal(heroConFigData.MagicDefence, curLvNum, breakId,upStarId,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)
|
||
if heroConFigData.OpenPassiveSkillRules then
|
||
local openlists,compoundOpenNum,compoundNum = HeroManager.GetAllPassiveSkillIds(heroConFigData,breakId,upStarId)
|
||
this.talentProgress.text = #openlists - compoundOpenNum .."/"..#heroConFigData.OpenPassiveSkillRules - compoundNum
|
||
|
||
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()
|
||
if index - 1 > 0 then
|
||
_leftStar = _curStar
|
||
leftIndex = index - 1
|
||
leftHeroData=heroDatas[leftIndex]
|
||
else
|
||
if _curStar==10 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 = 10
|
||
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]
|
||
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(1,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]
|
||
|
||
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 HandBookHeroInfoPanel:OnDestroy()
|
||
|
||
SubUIManager.Close(SubUIConfig.DragView, self.dragView)
|
||
end
|
||
|
||
return HandBookHeroInfoPanel |