562 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			562 lines
		
	
	
		
			26 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")
 | 
						||
    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[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)
 | 
						||
    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
 | 
						||
 
 | 
						||
    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]
 | 
						||
    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(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]
 | 
						||
    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 |