miduo_client/Assets/ManagedResources/~Lua/Modules/Recruit/HeroPreviewNewPanel.lua

357 lines
15 KiB
Lua

require("Base/BasePanel")
HeroPreviewNewPanel = Inherit(BasePanel)
local this = HeroPreviewNewPanel
local roleData = {}
local viewList = {}
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
--Tab
local TabBox = require("Modules/Common/TabBox")
local _TabData = {
[1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[10649] },
[2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12118] },
--[3] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = "普通" }
}
local _TabFontColor = {
default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(154 / 255, 78 / 255, 36 / 255, 1)
}
--上一模块索引
local curIndex = 0
local dataType = {
[1] = PRE_REWARD_POOL_TYPE.RECRUIT,
[2] = PRE_REWARD_POOL_TYPE.FRIEND,
[3] = PRE_REWARD_POOL_TYPE.NORMAL,
[4] = PRE_REWARD_POOL_TYPE.TIME_LIMITED_NEW_UP,
}
local itemList = {}
function HeroPreviewNewPanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.cardPre = Util.GetGameObject(self.gameObject, "item")
this.ScrollBar = Util.GetGameObject(self.gameObject, "bg/Scrollbar"):GetComponent("Scrollbar")
this.BtnBack = Util.GetGameObject(self.transform, "bg/btnBack")
this.titleItem = Util.GetGameObject(self.transform, "titleItem")
this.heroScroll = Util.GetGameObject(self.transform, "bg/heroScroll")
this.heroScrollGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid")
this.elementScroll = Util.GetGameObject(self.transform, "bg/elementScroll")
this.sevenGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/sevenGrid")
this.sixGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/sixGrid")
this.fiveGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/fiveGrid")
this.fourGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/fourGrid")
this.threeGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/threeGrid")
this.twoGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/twoGrid")
this.twoStarNum = Util.GetGameObject(self.transform, "bg/heroScroll/grid/twoStarNum")
this.oneGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid/oneGrid")
this.oneStarNum = Util.GetGameObject(self.transform, "bg/heroScroll/grid/oneStarNum")
this.darkGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid/DarkGrid")
this.fireGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid/FireGrid")
this.waterGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid/WaterGrid")
this.windyGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid/WindyGrid")
this.groundGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid/GroundGrid")
this.grid = Util.GetGameObject(self.transform, "bg/scroll/ScrollCycleView/grid")
this.heroGrid = Util.GetGameObject(self.transform, "bg/heroScroll/grid")
this.elementGrid = Util.GetGameObject(self.transform, "bg/elementScroll/grid")
this.viewCache = {}
--其他
this.other = Util.GetGameObject(self.gameObject, "bg/otherRoot")
this.other:SetActive(false)
--tabbox
this.tabBox = Util.GetGameObject(self.gameObject, "bg/TabBox")
this.List1 = {}
this.List2 = {}
this.List3 = {}
this.List4 = {}
this.List5 = {}
this.List6 = {}
this.List7 = {}
end
function HeroPreviewNewPanel:BindEvent()
Util.AddClick(this.BtnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
end
function HeroPreviewNewPanel:AddListener()
end
function HeroPreviewNewPanel:RemoveListener()
end
function HeroPreviewNewPanel:OnSortingOrderChange()
this.sortingOrder = self.sortingOrder
end
--第一个参数是否是英雄或元素
--第二个参数是否显示tab 如果没有,则显示,如果有,则根据第二个参数
function HeroPreviewNewPanel:OnOpen(...)
this.heroGrid.transform.anchoredPosition = Vector2.New(0, 0)
this.elementGrid.transform.anchoredPosition = Vector2.New(0, 0)
local temp = { ... }
if temp and temp[1] ~= nil then
this.heroScroll:SetActive(temp[1])
this.elementScroll:SetActive(not temp[1])
this.tabBox:SetActive(temp[1])
end
if temp[1] then --英雄招募
if #temp == 1 or temp[2] then
this.TabCtrl = TabBox.New()
this.TabCtrl:SetTabAdapter(this.TabAdapter)
this.TabCtrl:SetChangeTabCallBack(this.SwitchView)
this.TabCtrl:Init(this.tabBox, _TabData, temp[3] or 1)
else
this.tabBox:SetActive(temp[2])
this.SwitchView(4)
end
else
if RecruitManager.isFirstEnterElementScroll then --元素
RecruitManager.isFirstEnterElementScroll = false
for i, v in pairs(RecruitManager.previewElementData) do
Log(v.Pool)
if (v.Pool == 11) then
local view = SubUIManager.Open(SubUIConfig.ItemView, this.waterGrid.transform)
view:OnOpen(false, { v.Reward[1], v.Reward[2] }, 1.1, true)
view.name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (v.WeightShow / 100000) * 100) .. "%</color>"
elseif (v.Pool == 12) then
local view = SubUIManager.Open(SubUIConfig.ItemView, this.fireGrid.transform)
view:OnOpen(false, { v.Reward[1], v.Reward[2] }, 1.1, true)
view.name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (v.WeightShow / 100000) * 100) .. "%</color>"
elseif (v.Pool == 13) then
local view = SubUIManager.Open(SubUIConfig.ItemView, this.windyGrid.transform)
view:OnOpen(false, { v.Reward[1], v.Reward[2] }, 1.1, true)
view.name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (v.WeightShow / 100000) * 100) .. "%</color>"
elseif (v.Pool == 14) then
local view = SubUIManager.Open(SubUIConfig.ItemView, this.groundGrid.transform)
view:OnOpen(false, { v.Reward[1], v.Reward[2] }, 1.1, true)
view.name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (v.WeightShow / 100000) * 100) .. "%</color>"
end
end
this.elementScroll:SetActive(true)
this.tabBox:SetActive(false)
end
end
end
function HeroPreviewNewPanel:OnShow()
end
function HeroPreviewNewPanel:OnClose()
end
function HeroPreviewNewPanel:OnDestroy()
this.spLoader:Destroy()
this.List1 = {}
this.List2 = {}
this.List3 = {}
this.List4 = {}
this.List5 = {}
this.List6 = {}
this.List7 = {}
itemList = {}
RecruitManager.isFirstEnterElementScroll = true
RecruitManager.isFirstEnterHeroScroll = true
end
-- tab节点显示自定义
function this.TabAdapter(tab, index, status)
local tabLab = Util.GetGameObject(tab, "Text")
Util.GetGameObject(tab, "Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = _TabData[index].name
tabLab:GetComponent("Text").color = _TabFontColor[status]
end
--切换视图
function this.SwitchView(index)
local oldSelect
oldSelect, curIndex = curIndex, index
this.heroScrollGrid.transform:DOAnchorPosY(0, 0)
local oneData = {}
local twoData = {}
local threeData = {}
local fourData = {}
local fiveData = {}
local sixData = {}
local sevenData = {}
for index, v in ipairs(RecruitManager.GetRewardPreviewData(dataType[curIndex])) do
-- if curIndex==2 then
-- LogError("v.v.Reward[1].quan=="..v.Quality)
-- if v.Quality==1 then
-- table.insert(oneData,v)
-- elseif v.Quality==2 then
-- table.insert(twoData,v)
-- elseif v.Quality==3 then
-- table.insert(threeData,v)
-- elseif v.Quality==4 then
-- table.insert(fourData,v)
-- elseif v.Quality==5 then
-- table.insert(fiveData,v)
-- elseif v.Quality==6 then
-- table.insert(sixData,v)
-- elseif v.Quality==7 then
-- table.insert(sevenData,v)
-- end
-- else
if itemConfig[v.Reward[1]].HeroQuantity == 1 then
table.insert(oneData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 2 then
table.insert(twoData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 3 then
table.insert(threeData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 4 then
table.insert(fourData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 5 then
table.insert(fiveData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 6 then
table.insert(sixData, v)
elseif itemConfig[v.Reward[1]].HeroQuantity == 7 then
table.insert(sevenData, v)
end
--end
end
if index == 3 then
for i = 1, #oneData do
if not this.List1[i] then
this.List1[i] = SubUIManager.Open(SubUIConfig.ItemView, this.oneGrid.transform)
end
this.List1[i]:OnOpen(false, { oneData[i].Reward[1], oneData[i].Reward[2] }, 1.1, true)
this.List1[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (oneData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List1[i].gameObject:SetActive(true)
end
end
if index == 2 or index == 3 then
for i = 1, #twoData do
if not this.List2[i] then
this.List2[i] = SubUIManager.Open(SubUIConfig.ItemView, this.twoGrid.transform)
end
this.List2[i]:OnOpen(false, { twoData[i].Reward[1], twoData[i].Reward[2] }, 1.1, true)
this.List2[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (twoData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List2[i].gameObject:SetActive(true)
end
end
for i = 1, #this.List3 do
if this.List3[i] then
this.List3[i].gameObject:SetActive(false)
end
end
for i = 1, #threeData do
if not this.List3[i] then
this.List3[i] = SubUIManager.Open(SubUIConfig.ItemView, this.threeGrid.transform)
this.List3[i].gameObject:SetActive(true)
end
this.List3[i]:OnOpen(false, { threeData[i].Reward[1], threeData[i].Reward[2] }, 1.1, true)
this.List3[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (threeData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List3[i].gameObject:SetActive(true)
end
for i = 1, #this.List4 do
if this.List4[i] then
this.List4[i].gameObject:SetActive(false)
end
end
for i = 1, #fourData do
if not this.List4[i] then
this.List4[i] = SubUIManager.Open(SubUIConfig.ItemView, this.fourGrid.transform)
this.List4[i].gameObject:SetActive(true)
end
this.List4[i]:OnOpen(false, { fourData[i].Reward[1], fourData[i].Reward[2] }, 1.1, true)
this.List4[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (fourData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List4[i].gameObject:SetActive(true)
end
for i = 1, #this.List5 do
if this.List5[i] then
this.List5[i].gameObject:SetActive(false)
end
end
for i = 1, #fiveData do
if not this.List5[i] then
this.List5[i] = SubUIManager.Open(SubUIConfig.ItemView, this.fiveGrid.transform)
this.List5[i].gameObject:SetActive(true)
end
this.List5[i]:OnOpen(false, { fiveData[i].Reward[1], fiveData[i].Reward[2] }, 1.1, true)
this.List5[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (fiveData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List5[i].gameObject:SetActive(true)
end
for i = 1, #this.List6 do
if this.List6[i] then
this.List6[i].gameObject:SetActive(false)
end
end
for i = 1, #sixData do
if not this.List6[i] then
this.List6[i] = SubUIManager.Open(SubUIConfig.ItemView, this.sixGrid.transform)
this.List6[i].gameObject:SetActive(true)
end
this.List6[i]:OnOpen(false, { sixData[i].Reward[1], sixData[i].Reward[2] }, 1.1, true)
this.List6[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (sixData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List6[i].gameObject:SetActive(true)
end
-- for i = 1, #sixData do
-- if not this.List6[i] then
-- this.List6[i] = SubUIManager.Open(SubUIConfig.ItemView,this.sixGrid.transform)
-- this.List6[i].gameObject:SetActive(true)
-- end
-- this.List6[i]:OnOpen(false, {sixData[i].Reward[1], sixData[i].Reward[2]}, 1.1, true)
-- this.List6[i].name:GetComponent("Text").text="<color=#EDB64C>"..string.format("%.2f", (sixData[i].WeightShow/100000)*100) .."%</color>"
-- this.List6[i].gameObject:SetActive(true)
-- end
for i = 1, #this.List7 do
if this.List7[i] then
this.List7[i].gameObject:SetActive(false)
end
end
for i = 1, #sevenData do
if not this.List7[i] then
this.List7[i] = SubUIManager.Open(SubUIConfig.ItemView, this.sevenGrid.transform)
this.List7[i].gameObject:SetActive(true)
end
this.List7[i]:OnOpen(false, { sevenData[i].Reward[1], sevenData[i].Reward[2] }, 1.1, true)
this.List7[i].name:GetComponent("Text").text = "<color=#EDB64C>" ..
string.format("%.2f", (sevenData[i].WeightShow / 100000) * 100) .. "%</color>"
this.List7[i].gameObject:SetActive(true)
end
this.starGridSwitch(index)
end
function this.starGridSwitch(index)
if index == 1 or index == 4 then
this.oneStarNum:SetActive(false)
this.oneGrid:SetActive(false)
this.twoStarNum:SetActive(false)
this.twoGrid:SetActive(false)
elseif index == 2 then
this.oneStarNum:SetActive(false)
this.oneGrid:SetActive(false)
this.twoStarNum:SetActive(true)
this.twoGrid:SetActive(true)
else
this.oneStarNum:SetActive(true)
this.oneGrid:SetActive(true)
this.twoStarNum:SetActive(true)
this.twoGrid:SetActive(true)
end
end
return HeroPreviewNewPanel