262 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			262 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Lua
		
	
require("Base/BasePanel")
 | 
						|
RoleUpStarListPanel = Inherit(BasePanel)
 | 
						|
local this = RoleUpStarListPanel
 | 
						|
local curSelectHeroList={}
 | 
						|
local heroDataList={}
 | 
						|
local curNeedRoleNum
 | 
						|
local openThisPanel
 | 
						|
local curHeroData = {}
 | 
						|
--初始化组件(用于子类重写)
 | 
						|
function RoleUpStarListPanel:InitComponent()
 | 
						|
 | 
						|
    this.BtnBack = Util.GetGameObject(self.transform, "btnBack")
 | 
						|
    this.BtnSure = Util.GetGameObject(self.transform, "btnSure")
 | 
						|
    this.btnAutoSelect = Util.GetGameObject(self.transform, "btnAutoSelect")
 | 
						|
    this.cardPre = Util.GetGameObject(self.gameObject, "item")
 | 
						|
    --this.grid = Util.GetGameObject(self.gameObject, "scroll/grid")
 | 
						|
    this.desText = Util.GetGameObject(self.gameObject, "desText"):GetComponent("Text")
 | 
						|
    this.numText = Util.GetGameObject(self.gameObject, "numText"):GetComponent("Text")
 | 
						|
 | 
						|
    local v = Util.GetGameObject(self.gameObject, "scroll"):GetComponent("RectTransform").rect
 | 
						|
    LogGreen("v.width:".. v.width.."  v.height:"..v.height)
 | 
						|
    this.Scrollbar= Util.GetGameObject(self.gameObject, "Scrollbar"):GetComponent("Scrollbar")
 | 
						|
    this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,Util.GetGameObject(self.gameObject, "scroll").transform,
 | 
						|
            this.cardPre, this.Scrollbar, Vector2.New(v.width, v.height), 1, 5, Vector2.New(19.32,15))
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(6.78, 27)
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
 | 
						|
    this.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
 | 
						|
    this.ScrollView.moveTween.MomentumAmount = 1
 | 
						|
    this.ScrollView.moveTween.Strength = 1
 | 
						|
end
 | 
						|
 | 
						|
--绑定事件(用于子类重写)
 | 
						|
function RoleUpStarListPanel:BindEvent()
 | 
						|
 | 
						|
    Util.AddClick(this.BtnBack, function()
 | 
						|
        PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
 | 
						|
        self:ClosePanel()
 | 
						|
    end)
 | 
						|
    Util.AddClick(this.BtnSure, function()
 | 
						|
        self:ClosePanel()
 | 
						|
        Log("curSelectHeroList        "..LengthOfTable(curSelectHeroList))
 | 
						|
        for i, v in pairs(curSelectHeroList) do
 | 
						|
            LogPink("v.dynamicId       "..v.dynamicId)
 | 
						|
        end
 | 
						|
        openThisPanel:UpdateUpStarPosHeroData(curSelectHeroList)
 | 
						|
    end)
 | 
						|
    Util.AddClick(this.btnAutoSelect, function()
 | 
						|
        self:AutoSelectHero()
 | 
						|
    end)
 | 
						|
end
 | 
						|
 | 
						|
--添加事件监听(用于子类重写)
 | 
						|
function RoleUpStarListPanel:AddListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--移除事件监听(用于子类重写)
 | 
						|
function RoleUpStarListPanel:RemoveListener()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--界面打开时调用(用于子类重写)
 | 
						|
function RoleUpStarListPanel:OnOpen(heroData,HeroRankupGroupData,RankupConsumeMaterialData,_openThisPanel,_curSelectHeroList,_curHeroData)
 | 
						|
 | 
						|
    openThisPanel= _openThisPanel
 | 
						|
    curSelectHeroList={}
 | 
						|
    print(#_curSelectHeroList)
 | 
						|
    for i = 1, #_curSelectHeroList do
 | 
						|
        curSelectHeroList[_curSelectHeroList[i]]=_curSelectHeroList[i]
 | 
						|
    end
 | 
						|
   
 | 
						|
    curHeroData = _curHeroData
 | 
						|
    heroDataList = heroData
 | 
						|
    this.HeroSortData(heroDataList)
 | 
						|
    local text = ""
 | 
						|
    for i, v in pairs(heroDataList) do
 | 
						|
        text = "" 
 | 
						|
        for n,w in pairs(FormationManager.formationList) do
 | 
						|
            if HeroManager.heroResolveLicence[n] then
 | 
						|
                for m = 1, #w.teamHeroInfos do
 | 
						|
                    if v.dynamicId==w.teamHeroInfos[m].heroId then
 | 
						|
                        local isFormationStr = HeroManager.GetHeroFormationStr2(n)
 | 
						|
                        if isFormationStr ~= "" then
 | 
						|
                            if not text or text == "" then
 | 
						|
                                text = isFormationStr
 | 
						|
                            else
 | 
						|
                                text = text .. "、"..isFormationStr
 | 
						|
                            end
 | 
						|
                        end
 | 
						|
                    end
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
        if not text or text == "" then
 | 
						|
            v.isFormation = ""
 | 
						|
        else
 | 
						|
            v.isFormation = Language[12317]..text..Language[12318]
 | 
						|
        end
 | 
						|
    end
 | 
						|
    this.ScrollView:SetData(heroDataList, function (index, go)
 | 
						|
        this.OnShowSingleCardData(go, heroDataList[index])
 | 
						|
    end)
 | 
						|
 | 
						|
    curNeedRoleNum=RankupConsumeMaterialData[4]
 | 
						|
    local str = ""
 | 
						|
    if HeroRankupGroupData.Issame == 1 then
 | 
						|
        str = HeroRankupGroupData.StarLimit..Language[11868]
 | 
						|
    else
 | 
						|
        if HeroRankupGroupData.IsId ~= 0 then
 | 
						|
            str = HeroRankupGroupData.StarLimit..Language[11869]..ConfigManager.GetConfigData(ConfigName.HeroConfig,HeroRankupGroupData.IsId).ReadingName
 | 
						|
        else
 | 
						|
            if HeroRankupGroupData.IsSameClan == 0 then
 | 
						|
                str = HeroRankupGroupData.StarLimit..Language[11870]
 | 
						|
            else
 | 
						|
                str = HeroRankupGroupData.StarLimit..Language[11871]
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    this.desText.text=string.format(Language[11872],curNeedRoleNum,str)--HeroRankupGroupData.Name)
 | 
						|
    this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum)
 | 
						|
end
 | 
						|
function this.OnClickEnterHero(go,heroData,type)
 | 
						|
 | 
						|
    if type==1 then
 | 
						|
        if #curSelectHeroList>=curNeedRoleNum then
 | 
						|
            PopupTipPanel.ShowTip(Language[10660])
 | 
						|
            return
 | 
						|
        else
 | 
						|
            table.insert(curSelectHeroList,heroData)
 | 
						|
        end
 | 
						|
    elseif type==2 then
 | 
						|
        for i = 1, #curSelectHeroList do
 | 
						|
            if heroData.dynamicId==curSelectHeroList[i].dynamicId then
 | 
						|
                table.remove(curSelectHeroList,i)
 | 
						|
                break
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    this.OnShowSingleCardData(go,heroData,type)
 | 
						|
    this.numText.text=string.format("%s/%s",#curSelectHeroList,curNeedRoleNum)
 | 
						|
end
 | 
						|
 | 
						|
function this.OnShowSingleCardData(go,heroData)--isSelect 1选择  2 没选择
 | 
						|
    local choosed = Util.GetGameObject(go.transform, "choosed")
 | 
						|
    choosed:SetActive(false)
 | 
						|
    if curSelectHeroList[heroData.dynamicId] then
 | 
						|
        curSelectHeroList[heroData.dynamicId]=heroData
 | 
						|
        choosed:SetActive(true)
 | 
						|
    end
 | 
						|
    Util.GetGameObject(go.transform, "frame"):GetComponent("Image").sprite = Util.LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality,heroData.star))
 | 
						|
    Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = heroData.lv
 | 
						|
    Util.GetGameObject(go.transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(heroData.icon)
 | 
						|
    Util.GetGameObject(go.transform, "posIcon"):SetActive(false)--:GetComponent("Image").sprite = Util.LoadSprite(heroData.professionIcon)
 | 
						|
    Util.GetGameObject(go.transform, "proIcon"):GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(heroData.heroConfig.PropertyName))
 | 
						|
    --Util.GetGameObject(go.transform, "heroStage"):GetComponent("Image").sprite = Util.LoadSprite(HeroStageSprite[heroData.heroConfig.HeroStage])
 | 
						|
    local formationMask = Util.GetGameObject(go.transform, "formationMask")
 | 
						|
    --LogError("heroData.isFormation            "..heroData.isFormation)
 | 
						|
    formationMask:SetActive((heroData.isFormation ~= "" and heroData.isFormation ~= Language[11108]) or heroData.lockState == 1)
 | 
						|
    Util.GetGameObject(formationMask.transform, "formationImage"):SetActive(heroData.isFormation ~= "" )
 | 
						|
    Util.GetGameObject(formationMask.transform, "lockImage"):SetActive( heroData.lockState == 1)
 | 
						|
    Util.GetGameObject(go.transform, "noumenon"):SetActive( heroData.id == curHeroData.id )
 | 
						|
    local starGrid = Util.GetGameObject(go.transform, "star")
 | 
						|
    SetHeroStars(starGrid, heroData.star,1,nil,nil,Vector2.New(0,1))
 | 
						|
    local cardBtn = Util.GetGameObject(go.transform, "icon")
 | 
						|
    local GongMingMask = Util.GetGameObject(go.transform, "GongMingMask") 
 | 
						|
    GongMingMask:SetActive(false)--最后检测是否共鸣
 | 
						|
    if heroData.lockState == 1 or (heroData.isFormation ~= "" and heroData.isFormation ~= Language[11108]) then
 | 
						|
    else
 | 
						|
        if HarmonyManager.IsChangeColor(heroData.dynamicId) then
 | 
						|
            Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = "<color=#0f0>"..heroData.lv.."</color>"
 | 
						|
            GongMingMask:SetActive(true)
 | 
						|
        elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager.GetSingleAdditionsData(HarmonyAddType.AddLv) then
 | 
						|
            if HarmonyManager.GetSingleAdditionsData(HarmonyAddType.AddLv).heroTid  == 0 then
 | 
						|
                -- body
 | 
						|
                Util.GetGameObject(go.transform, "lv/Text"):GetComponent("Text").text = "<color=#ffbe22>"..heroData.lv.."</color>"
 | 
						|
                GongMingMask:SetActive(true)
 | 
						|
            end
 | 
						|
            
 | 
						|
        end
 | 
						|
    end
 | 
						|
    Util.AddOnceClick(GongMingMask, function()
 | 
						|
        PopupTipPanel.ShowTip("无法对共鸣神将进行此操作!")
 | 
						|
    end)
 | 
						|
    Util.AddOnceClick(cardBtn, function()
 | 
						|
            if curSelectHeroList[heroData.dynamicId] then
 | 
						|
                choosed:SetActive(false)
 | 
						|
                curSelectHeroList[heroData.dynamicId]=nil
 | 
						|
                this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum)
 | 
						|
                return
 | 
						|
            end
 | 
						|
            if LengthOfTable(curSelectHeroList)>=curNeedRoleNum then
 | 
						|
                PopupTipPanel.ShowTip(Language[10660])
 | 
						|
                return
 | 
						|
            end
 | 
						|
            curSelectHeroList[heroData.dynamicId]=heroData
 | 
						|
            choosed:SetActive(true)
 | 
						|
            this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum)
 | 
						|
    end)
 | 
						|
 | 
						|
    Util.AddOnceClick(formationMask, function()
 | 
						|
        if heroData.isFormation ~= "" then
 | 
						|
            PopupTipPanel.ShowTip( heroData.isFormation)
 | 
						|
            return
 | 
						|
        end
 | 
						|
        if heroData.lockState == 1 then
 | 
						|
            PopupTipPanel.ShowTip(Language[11776])
 | 
						|
            return
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
function this.HeroSortData(heroData)
 | 
						|
    Log("#heroData            "..#heroData)
 | 
						|
    --Language[11108]
 | 
						|
    table.sort(heroData, function(a, b)
 | 
						|
        if (a.isFormation == "" or (a.isFormation ~= "" and a.isFormation == Language[11108]))  and (b.isFormation == ""  or (b.isFormation ~= "" and b.isFormation == Language[11108])) 
 | 
						|
        or (a.isFormation ~= "" and a.isFormation ~= Language[11108]) and (b.isFormation ~= "" and b.isFormation ~= Language[11108]) then
 | 
						|
            if a.lockState == b.lockState then
 | 
						|
                if a.heroConfig.Star == b.heroConfig.Star then
 | 
						|
                    if a.lv == b.lv then
 | 
						|
                        if a.id ~= curHeroData.id and b.id ~= curHeroData.id or  a.id == curHeroData.id and b.id == curHeroData.id then 
 | 
						|
                            return a.id > b.id
 | 
						|
                        else
 | 
						|
                            return not a.id ~= curHeroData.id  and   b.id == curHeroData.id
 | 
						|
                        end
 | 
						|
                    else
 | 
						|
                        return a.lv < b.lv
 | 
						|
                    end
 | 
						|
                else
 | 
						|
                   return a.heroConfig.Star < b.heroConfig.Star
 | 
						|
                end
 | 
						|
            else
 | 
						|
                return a.lockState < b.lockState
 | 
						|
            end
 | 
						|
        else
 | 
						|
            return (a.isFormation == "" or (a.isFormation ~= "" and a.isFormation == Language[11108]))  and (not b.dynamicId ~= "" and b.isFormation ~= Language[11108])
 | 
						|
        end
 | 
						|
    end)
 | 
						|
end
 | 
						|
function RoleUpStarListPanel:AutoSelectHero()
 | 
						|
    curSelectHeroList = {}
 | 
						|
    for i = 1, #heroDataList do
 | 
						|
        if LengthOfTable(curSelectHeroList) < curNeedRoleNum and heroDataList[i].isFormation == "" and heroDataList[i].lockState == 0 and (not HarmonyManager.IsChangeColor(heroDataList[i].dynamicId) and(not HarmonyManager:IsEnvoy(heroDataList[i].dynamicId))) then
 | 
						|
            curSelectHeroList[heroDataList[i].dynamicId]=heroDataList[i]
 | 
						|
        end
 | 
						|
    end
 | 
						|
    this.numText.text=string.format("%s/%s",LengthOfTable(curSelectHeroList),curNeedRoleNum)
 | 
						|
    this.ScrollView:SetData(heroDataList, function (index, go)
 | 
						|
        this.OnShowSingleCardData(go, heroDataList[index])
 | 
						|
    end)
 | 
						|
end
 | 
						|
--界面关闭时调用(用于子类重写)
 | 
						|
function RoleUpStarListPanel:OnClose()
 | 
						|
 | 
						|
end
 | 
						|
 | 
						|
--界面销毁时调用(用于子类重写)
 | 
						|
function RoleUpStarListPanel:OnDestroy()
 | 
						|
 | 
						|
    this.ScrollView = nil
 | 
						|
end
 | 
						|
 | 
						|
return RoleUpStarListPanel |