miduo_client/Assets/ManagedResources/~Lua/Modules/Resolve/View/Resolve_Pokemon.lua

318 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode 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.

----- 献祭 -----
local this = {}
local sortingOrder=0
local tabSortType = 0
local tarHero
local selectHeroData={}--选择的英雄list did = data
local maxSelectNum = 30--最大选择数量
--选择碎片的数量
local selectChipNum = 0
--显示的灵兽及碎片数据
local heroDatas={}
local oldChoosed=nil--上一个选中英雄
--选择的碎片id
local selectChipId=0
--碎片最大数量
local maxChipNum =0
--是否为灵兽/灵兽碎片
local isPokemon = false
function this:InitComponent(gameObject)
--上部内容
this.helpBtn=Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/HelpBtn")
this.helpPos=this.helpBtn:GetComponent("RectTransform").localPosition
--回溯按钮
this.confirmBtn=Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/ConfirmBtn")
Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/ConfirmBtn/Image"):GetComponent("Image").sprite=Util.LoadSprite("lingshou_fangshenganniu")
this.shopBtn=Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/shopBtn")
this.selectText = Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/selectNumText"):GetComponent("Text")
this.selectBtn = Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/btns/selectBtn")
this.cardPre = Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/equipTreasurePre")
this.scrollbar = Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/Scrollbar"):GetComponent("Scrollbar")
this.Empty = Util.GetGameObject(gameObject,"Content/Resolve_Pokemon/Empty")
local v21 = Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/ItemListRoot"):GetComponent("RectTransform").rect
Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/Empty/Bg/Text"):GetComponent("Text").text=Language[12393]
this.chipObj=Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/chipObj")
this.btn_remove=Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/chipObj/btn_remove")
this.btn_add=Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/chipObj/btn_add")
this.chipNumTxt=Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/chipObj/Text"):GetComponent("Text")
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(gameObject, "Content/Resolve_Pokemon/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
maxSelectNum = tonumber(ConfigManager.GetConfigData(ConfigName.SpecialConfig,54).Value)
end
function this:BindEvent()
--减少按钮
Util.AddClick(this.btn_remove,function()
if selectChipNum==1 then
--减少按钮置灰
Util.SetGray(this.btn_remove,true)
return
end
if selectChipNum== maxChipNum-1 then
--取消增加按钮置灰
Util.SetGray(this.btn_add,false)
end
selectChipNum=selectChipNum-1
this.chipNumTxt=selectChipNum
end
)
--增加按钮
Util.AddClick(this.btn_add,function()
if selectChipNum==maxChipNum then
--增加按钮置灰
Util.SetGray(this.btn_add,true)
return
end
if selectChipNum== 2 then
--取消减少按钮置灰
Util.SetGray(this.btn_remove,false)
end
selectChipNum=selectChipNum + 1
this.chipNumTxt=selectChipNum
end
)
Util.AddClick(this.helpBtn,function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.Resolve_Dismantle,this.helpPos.x,this.helpPos.y)
end)
Util.AddClick(this.confirmBtn,function()
if tonumber(LengthOfTable(selectHeroData))==0 then
PopupTipPanel.ShowTip(Language[12394])
else
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.ResolveDismantle,
HeroManager.GetHeroReturnItems(selectHeroData,GENERAL_POPUP_TYPE.ResolveDismantle),selectHeroData,selectChipId,selectChipNum)
end
end)
Util.AddClick(this.shopBtn, function()
local isActive, errorTip = ShopManager.IsActive(SHOP_TYPE.SOUL_CONTRACT_SHOP)
if not isActive then
PopupTipPanel.ShowTip(errorTip or Language[10528])
return
end
UIManager.OpenPanel(UIName.MainShopPanel, SHOP_TYPE.SOUL_CONTRACT_SHOP)
end)
end
function this:AddListener()
end
function this:RemoveListener()
end
function this:OnShow(...)
sortingOrder =0
this.SortTypeClick(sortingOrder)
end
--展示数据
function this.SortTypeClick(_sortType)
tabSortType=_sortType
selectHeroData={}
--所有灵兽数据
local heros=PokemonManager.GetPokemonDatas()
if heros then
for i, v in pairs(heros) do
local hero={}
local heroConfig=v.config
hero.star=v.star
hero.lv=v.lv
hero.dynamicId=v.dynamicId
hero.ischip=0
hero.icon=heroConfig.Icon
hero.id=v.id
hero.quality=heroConfig.Quality
hero.name=heroConfig.Name
hero.returnCoin=heroConfig.CoinReturn
hero.frame=GetHeroQuantityImageByquality(heroConfig.Quality,1)
hero.num=1
table.insert(heroDatas,hero)
end
end
--所有灵兽碎片
local chips=BagManager.GetDataByItemType(22)
if chips then
for i, v in pairs(chips) do
local chip={}
chip.star=0
chip.lv=0
chip.ischip=1
chip.frame=v.frame
chip.icon=v.icon
chip.id=v.id
chip.quality=v.quality
chip.num=v.num
chip.name=v.name
chip.returnCoin=0
chip.dynamicId=v.id
table.insert(heroDatas,chip)
end
end
this.chipObj:SetActive(false)
this.selectText.gameObject:SetActive(true)
this.selectText.text = Language[11775].."0/"..maxSelectNum
-- this.SortHeroDatas(heroDatas)
this.Empty:SetActive(#heroDatas <= 0)
this.ScrollView:SetData(heroDatas, function (index, go)
this.SingleHeroDataShow(go, heroDatas[index],false)
end)
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.SingleHeroDataShow(go,_heroData,isGray)
local heroData = _heroData
local _go = go
Util.GetGameObject(_go.transform, "frame"):GetComponent("Image").sprite = Util.LoadSprite(heroData.frame)
if heroData.ischip==1 then
Util.GetGameObject(_go.transform, "lv/Text"):GetComponent("Text").text = heroData.num
else
Util.GetGameObject(_go.transform, "lv/Text"):GetComponent("Text").text = heroData.lv
end
Util.GetGameObject(_go.transform, "Text"):GetComponent("Text").text = heroData.name
Util.GetGameObject(_go.transform, "icon"):GetComponent("Image").sprite = Util.LoadSprite(heroData.icon)
local chipImg=Util.GetGameObject(_go.transform, "chipImg"):GetComponent("Image")
local formationMask =Util.GetGameObject(_go.transform, "mask")
if heroData.ischip==1 then
chipImg.gameObject:SetActive(true)
formationMask:SetActive(isGray)
chipImg.sprite=Util.LoadSprite(GetHeroChipQuantityImageByquality(heroData.quality))
else
chipImg.gameObject:SetActive(false)
formationMask:SetActive(false)
end
local starGrid = Util.GetGameObject(_go.transform, "star")
SetHeroStars(starGrid, heroData.star,1,Vector2.New(32.5,32.5),-15)
local choosed =Util.GetGameObject(_go.transform, "choosed")
if heroData.ischip then
choosed:SetActive(selectChipId==heroData.dynamicId)
else
choosed:SetActive(selectHeroData[heroData.dynamicId] ~= nil)
end
local cardclickBtn = Util.GetGameObject(_go.transform, "icon")
this.selectText.text = Language[11775]..LengthOfTable(selectHeroData).."/"..maxSelectNum
Util.AddOnceClick(cardclickBtn, function()
--如果点击的是碎片
if heroData.ischip==1 then
--第一个选中的碎片
if oldChoosed==nil then
this.selectText.gameObject:SetActive(false)
this.chipObj:SetActive(true)
choosed:SetActive(true)
oldChoosed=choosed
else
--如果选中之前选中的,就取消选中
if oldChoosed==choosed then
oldChoosed=nil
selectChipId=0
choosed:SetActive(false)
this.selectText.gameObject:SetActive(true)
this.selectText.text = Language[11775].."0".."/"..maxSelectNum
this.chipObj:SetActive(false)
return
else
oldChoosed:SetActive(false)
choosed:SetActive(true)
oldChoosed=choosed
end
end
selectChipId=heroData.dynamicId
Util.SetGray(this.btn_add,true)
selectChipNum=heroData.num
maxChipNum=heroData.num
this.chipNumTxt.text=selectChipNum
isPokemon=false
--点击的是灵兽
else
--如果灵兽是选中状态,取消选中
if selectHeroData[heroData.dynamicId] then
choosed:SetActive(false)
if oldChoosed then
oldChoosed:SetActive(false)
end
selectChipId=0
selectHeroData[heroData.dynamicId] = nil
local haveNum=LengthOfTable(selectHeroData)
this.selectText.text = Language[11775]..haveNum.."/"..maxSelectNum
if haveNum==0 then
-- --todo 取消所有碎片置灰
this.ScrollView:SetData(heroDatas, function (index, go)
this.SingleHeroDataShow(go, heroDatas[index],false)
end)
isPokemon=false
end
return
end
--如果选中灵兽的数量为最大
if LengthOfTable(selectHeroData)==maxSelectNum then
PopupTipPanel.ShowTip(string.format(Language[12396],maxSelectNum))
return
end
if isPokemon==false then
--todo 首次点击灵兽,置灰所有碎片
this.ScrollView:SetData(heroDatas, function (index, go)
this.SingleHeroDataShow(go, heroDatas[index],true)
end)
selectChipId=0
this.selectText.gameObject:SetActive(true)
this.chipObj:SetActive(false)
isPokemon = true
end
selectHeroData[heroData.dynamicId]=heroData
choosed:SetActive(true)
this.selectText.text = Language[11775]..LengthOfTable(selectHeroData).."/"..maxSelectNum
end
end)
--灰色遮罩点击
Util.AddOnceClick(formationMask, function()
PopupTipPanel.ShowTip(Language[12395])
end)
end
--英雄排序
function this.SortHeroDatas(_heroDatas)
--上阵最优先星级优先同星级等级优先同星级同等级按sortId排序。排序时降序排序。
table.sort(_heroDatas, function(a, b)
if a ==nil or b == nil then
return
end
if a.quality ==b.quality then
if a.star == b.star then
if a.lv == b.lv then
return a.id > b.id
else
return a.lv < b.lv
end
else
return a.star < b.star
end
else
return a.quality < b.quality
end
end)
end
function this:OnClose()
end
function this:OnDestroy()
end
return this