----- 回溯 -----
local this = {}
local sortType=0
local sortingOrder=0
local tarHero={}--当前筛选后显示英雄列表
local selectHeroData={}--选择的英雄list did = data
local oldChoosed=nil--上一个选中英雄
local heroConfig=ConfigManager.GetConfig(ConfigName.HeroConfig)
local heroRankupConfig = ConfigManager.GetConfig(ConfigName.HeroRankupConfig)
function this:InitComponent(gameObject)
this.helpBtn=Util.GetGameObject(gameObject,"Content/Resolve_Talisman/HelpBtn")
this.helpPos=this.helpBtn:GetComponent("RectTransform").localPosition
this.confirmBtn=Util.GetGameObject(gameObject,"Content/Resolve_Talisman/ConfirmBtn")
--道具数量信息
this.info1 = Util.GetGameObject(gameObject,"Content/Resolve_Talisman/UseProps/Info")
this.info1:GetComponent("Text").text = Language[11751]
this.info2 = Util.GetGameObject(gameObject,"Content/Resolve_Talisman/UseProps/Info (1)")
this.info2:GetComponent("Text").text = Language[11752]
Util.GetGameObject(gameObject,"Content/Resolve_Talisman/Empty/Bg/Text"):GetComponent("Text").text = Language[11753]
this.empty=Util.GetGameObject(gameObject,"Content/Resolve_Talisman/Empty")
this.cardPre = Util.GetGameObject(gameObject,"item")
this.scrollbar = Util.GetGameObject(gameObject,"Content/Resolve_Talisman/Scrollbar"):GetComponent("Scrollbar")
local v21 = Util.GetGameObject(gameObject, "Content/Resolve_Talisman/ItemListRoot"):GetComponent("RectTransform").rect
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(gameObject, "Content/Resolve_Talisman/ItemListRoot").transform,
this.cardPre, this.scrollbar, Vector2.New(v21.width, v21.height), 1, 5, Vector2.New(43,15))
this.ScrollView.moveTween.MomentumAmount = 1
this.ScrollView.moveTween.Strength = 1
Util.GetGameObject(this.confirmBtn,"Image"):GetComponent("Image").sprite = Util.LoadSprite("h_guiyuan_anniu_zh")
end
function this:BindEvent()
Util.AddClick(this.helpBtn,function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.TalismanResolve,this.helpPos.x,this.helpPos.y)
end)
Util.AddClick(this.confirmBtn,function()
if tonumber(LengthOfTable(selectHeroData))==0 then
PopupTipPanel.ShowTip(Language[11754])
else
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.TalismanResolve,
HeroManager.GetHeroReturnItems(selectHeroData,GENERAL_POPUP_TYPE.TalismanResolve),selectHeroData)
end
end)
end
function this:AddListener()
end
function this:RemoveListener()
end
function this:OnShow(...)
local args={...}
sortingOrder =args[1]
sortType = PlayerManager.now_index or 0
LogGreen(PlayerManager.now_index)
this.SortTypeClick(sortType,args[3],args[4])
end
function this:OnClose()
selectHeroData={}
oldChoosed=nil
end
function this:OnDestroy()
end
--展示数据
function this.SortTypeClick(_sortType,isTop,isAni)
selectHeroData={}
tarHero={}
tarHero=this.GetHeroData(_sortType)
--设置empty
this.empty:SetActive(#tarHero==0)
--设置英雄显示
this.SortHeroDatas(tarHero)
this.ScrollView:SetData(tarHero, function (index, go)
this.SingleHeroDataShow(go, tarHero[index])
end,isTop,isAni)
-- this.ScrollView:ForeachItemGO(function(index, go)
-- Timer.New(function()
-- go.gameObject:SetActive(true)
-- PlayUIAnim(go.gameObject)
-- end, 0.001 * (index - 1)):Start()
-- end)
end
--获取筛选后的英雄数据
function this.GetHeroData(_sortType)
local tempHeros={}
local data=HeroManager.GetAllHeroDataMsinusUpWar(_sortType,3)
for n=1,#data do
tempHeros[#tempHeros+1]=data[n]
end
--根据元素筛选
local heros={}
if tempHeros and LengthOfTable(tempHeros)>0 then
for i, v in pairs(tempHeros) do
if _sortType ==0 then
table.insert(heros,v)
else
if v.property==_sortType then
table.insert(heros,v)
end
end
end
end
--end
return heros
end
--英雄单个数据展示
function this.SingleHeroDataShow(go,_heroData)
local heroData = _heroData
local _go = go
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.talismanList--heroData.lv
Util.GetGameObject(_go.transform, "Text"):GetComponent("Text").text =SubString2(GetLanguageStrById(heroData.heroConfig.ReadingName),8)
Util.GetGameObject(_go.transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(heroData.icon)
Util.GetGameObject(_go.transform, "posIcon"):SetActive(false)
Util.GetGameObject(_go.transform, "proIcon"):GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(heroData.heroConfig.PropertyName))
local starGrid = Util.GetGameObject(_go.transform, "star")
SetHeroStars(starGrid, heroData.star,1,nil,-15)
local choosed =Util.GetGameObject(_go.transform, "choosed")
local formationMask =Util.GetGameObject(_go.transform, "formationMask")
Util.GetGameObject(_go.transform, "formationMask/formationImage/upImage"):GetComponent("Image").sprite = Util.LoadSprite("t_tongyong-yishangzheng_zh")
formationMask:SetActive(heroData.isFormation ~= "" )
local lockMask =Util.GetGameObject(_go.transform, "lockMask")
lockMask:SetActive(heroData.lockState == 1)
choosed:SetActive(selectHeroData[heroData.dynamicId] ~= nil)
local cardclickBtn = Util.GetGameObject(_go.transform, "icon")
local GongMingMask = Util.GetGameObject(_go.transform, "GongMingMask")
GongMingMask:SetActive(false)--最后检测是否共鸣
if heroData.lockState == 1 or heroData.isFormation ~= "" then
else
if HarmonyManager.IsChangeColor(heroData.dynamicId) then
Util.GetGameObject(_go.transform, "lv/Text"):GetComponent("Text").text = ""..heroData.lv..""
GongMingMask:SetActive(true)
-- elseif HarmonyManager:IsEnvoy(heroData.dynamicId) then
-- Util.GetGameObject(_go.transform, "lv/Text"):GetComponent("Text").text = ""..heroData.lv..""
-- GongMingMask:SetActive(true)
end
end
Util.AddOnceClick(GongMingMask, function()
PopupTipPanel.ShowTip(Language[12184])
end)
Util.AddOnceClick(cardclickBtn, function()
if oldChoosed then
oldChoosed:SetActive(false)
end
if oldChoosed==choosed then
oldChoosed:SetActive(LengthOfTable(selectHeroData)==0)
oldChoosed=nil
selectHeroData={}
else
HarmonyManager.IsGongMing(heroData.dynamicId)
choosed:SetActive(true)
oldChoosed=choosed
selectHeroData = {}
selectHeroData[heroData.dynamicId]=heroData
end
-- this.info1:SetActive( not (LengthOfTable(selectHeroData) > 0))
-- this.info2:SetActive( not (LengthOfTable(selectHeroData) > 0))
end)
Util.AddOnceClick(formationMask, function()
if heroData.isFormation ~= "" then
-- 复位角色的状态
MsgPanel.ShowTwo(Language[11738]..heroData.isFormation..Language[11739], nil, function()
if heroData.isFormations[1] then
if heroData.isFormations[1] == FormationTypeDef.FORMATION_NORMAL then
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.SAVE_FORMATION)
elseif heroData.isFormations[1] == FormationTypeDef.FORMATION_ARENA_DEFEND then
JumpManager.GoJump(8001)
-- elseif heroData.isFormations[1] == FormationTypeDef.FORMATION_ENDLESS_MAP then
-- JumpManager.GoJump(57001)
elseif heroData.isFormations[1] == FormationTypeDef.EXPEDITION then
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.SAVE_FORMATION,FormationTypeDef.EXPEDITION)
elseif heroData.isFormations[1] == FormationTypeDef.ARENA_TOM_MATCH then
-- JumpManager.GoJump(57001)
UIManager.OpenPanel(UIName.ArenaTopMatchPanel)
end
end
end)
return
end
end)
Util.AddOnceClick(lockMask, function()
if heroData.lockState == 1 then
MsgPanel.ShowTwo(Language[11740], nil, function()
NetManager.HeroLockEvent(heroData.dynamicId,0,function ()
PopupTipPanel.ShowTip(Language[11741])
HeroManager.UpdateSingleHeroLockState(heroData.dynamicId,0)
lockMask:SetActive(false)
end)
end)
return
end
end)
end
--英雄排序
function this.SortHeroDatas(_heroDatas)
--上阵最优先,星级优先,同星级等级优先,同星级同等级按sortId排序。排序时降序排序。
table.sort(_heroDatas, function(a, b)
if a ==nil or b == nil then
return
end
if a.isFormation == "" and b.isFormation == "" then
if a.lockState == b.lockState then
if a.isHarmonyGongMing == b.isHarmonyGongMing then
if a.talismanList == b.talismanList then
if a.star == b.star then
if a.lv == b.lv then
return a.heroConfig.Id > b.heroConfig.Id
else
return a.lv < b.lv
end
else
return a.star < b.star
end
else
return a.talismanList < b.talismanList
end
else
return a.isHarmonyGongMing < b.isHarmonyGongMing
end
else
return a.lockState < b.lockState
end
else
return a.isFormation == "" and not b.dynamicId ~= ""
end
end)
end
return this