636 lines
25 KiB
Lua
636 lines
25 KiB
Lua
|
||
|
||
--- 界面逻辑
|
||
require("Base/BasePanel")
|
||
local GiveMePowerPanel = Inherit(BasePanel)
|
||
local this = GiveMePowerPanel
|
||
|
||
--- 界面专用对象池
|
||
local TempPool = {}
|
||
function TempPool:Init()
|
||
if not self.MomNode then
|
||
self.MomNode = {}
|
||
self.NodeList = {}
|
||
self.UsedIndex = {}
|
||
end
|
||
end
|
||
function TempPool:Register(type, node)
|
||
self.MomNode[type] = node
|
||
end
|
||
function TempPool:GetNode(type, parent)
|
||
if not type or not parent then
|
||
Log("参数错误")
|
||
return
|
||
end
|
||
if not self.NodeList[type] then
|
||
self.NodeList[type] = {}
|
||
self.UsedIndex[type] = 0
|
||
end
|
||
if self.UsedIndex[type] >= #self.NodeList[type] then
|
||
local mom = self.MomNode[type]
|
||
if not mom then
|
||
Log("未找到母体")
|
||
return
|
||
end
|
||
self.UsedIndex[type] = self.UsedIndex[type] + 1
|
||
local node = newObjToParent(mom, parent)
|
||
table.insert(self.NodeList[type], node)
|
||
node.transform.localPosition = Vector3.New(0 ,0, 0)
|
||
return node
|
||
end
|
||
self.UsedIndex[type] = self.UsedIndex[type] + 1
|
||
local node = self.NodeList[type][self.UsedIndex[type]]
|
||
node.transform:SetParent(parent.transform)
|
||
node.transform.localPosition = Vector3.New(0 ,0, 0)
|
||
node:SetActive(true)
|
||
return node
|
||
end
|
||
function TempPool:Recycle(type)
|
||
local nodeList = self.NodeList[type] or {}
|
||
for _, node in ipairs(nodeList) do
|
||
node:SetActive(false)
|
||
end
|
||
self.UsedIndex[type] = 0
|
||
end
|
||
function TempPool:RecycleAll()
|
||
for type, _ in pairs(self.NodeList) do
|
||
self:Recycle(type)
|
||
end
|
||
end
|
||
function TempPool:Destroy()
|
||
self.MomNode = {}
|
||
self.NodeList = {}
|
||
self.UsedIndex = {}
|
||
end
|
||
|
||
-- 按钮开闭状态改变
|
||
local _BtnStatus = {
|
||
open = {img = "Btn_hz_cheng_01", text = Language[11631], textColor = Color.New(132/255,81/255,62/255,1)},
|
||
close = {img = "Btn_hz_lan_01", text = Language[11632], textColor = Color.New(139/255,104/255,11/255,1)}
|
||
}
|
||
local function _SetBtnStatus(btn, status)
|
||
local status = _BtnStatus[status]
|
||
if not status then return end
|
||
btn:GetComponent("Image").sprite = this.spLoader:LoadSprite(status.img)
|
||
local txt = Util.GetGameObject(btn, "Text"):GetComponent("Text")
|
||
txt.text = status.text
|
||
txt.color = status.textColor
|
||
end
|
||
|
||
-- Tab管理器
|
||
local TabBox = require("Modules/Common/TabBox")
|
||
local _TabSprite = { default = "r_qrkh_anniu_2", select = "r_qrkh_anniu_1" }
|
||
local _TabFontColor = { default = Color.New(181 / 255, 164 / 255, 129 / 255, 1),
|
||
select = Color.New(253 / 255, 244 / 255, 214 / 255, 1) }
|
||
local _TabData = {
|
||
[1] = { name = Language[11633] },
|
||
[2] = { name = Language[11634] },
|
||
[3] = { name = Language[11635] },
|
||
[4] = { name = Language[11636] },
|
||
}
|
||
|
||
-- 评分进度条
|
||
local _HeroGradeProgress = {}
|
||
|
||
--初始化组件(用于子类重写)
|
||
function GiveMePowerPanel:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
this.btnBack = Util.GetGameObject(this.transform, "btnBack")
|
||
this.tabbox = Util.GetGameObject(this.transform, "tabbox")
|
||
|
||
this.heroPanel = Util.GetGameObject(this.transform, "content/hero")
|
||
this.forceValue = Util.GetGameObject(this.heroPanel, "powerBtn/value"):GetComponent("Text")
|
||
Util.GetGameObject(this.gameObject, "powerBtn"):GetComponent("Image").sprite = this.spLoader:LoadSprite("t_tongyong-zhanli_zh")
|
||
|
||
this.groupBox = Util.GetGameObject(this.heroPanel, "demons")
|
||
this.heroChoose = Util.GetGameObject(this.heroPanel, "demons/choose")
|
||
this.btnMyGroup = Util.GetGameObject(this.heroPanel, "orggroup")
|
||
|
||
this.btnAddHero = {}
|
||
this.groupBox = {}
|
||
for i = 1, 6 do
|
||
this.btnAddHero[i] = Util.GetGameObject(this.heroPanel, "demons/add"..i)
|
||
this.groupBox[i] = Util.GetGameObject(this.heroPanel, "demons/item"..i)
|
||
end
|
||
|
||
this.curHeroName = Util.GetGameObject(this.heroPanel, "curHero/name"):GetComponent("Text")
|
||
this.curHeroProgress = Util.GetGameObject(this.heroPanel, "curHero/progress"):GetComponent("Slider")
|
||
this.curHeroGrade = Util.GetGameObject(this.heroPanel, "curHero/progress/Text"):GetComponent("Text")
|
||
|
||
this.heroScrollRoot = Util.GetGameObject(this.heroPanel, "scrollRoot")
|
||
this.heroScrollItem = Util.GetGameObject(this.heroPanel, "scrollRoot/item")
|
||
|
||
this.otherPanel = Util.GetGameObject(this.transform, "content/other")
|
||
this.resItem1 = Util.GetGameObject(this.otherPanel, "ResItem1")
|
||
this.resItem2 = Util.GetGameObject(this.otherPanel, "ResItem2")
|
||
this.rmdItem = Util.GetGameObject(this.otherPanel, "rmdItem")
|
||
this.qaItem1 = Util.GetGameObject(this.otherPanel, "qaItem1")
|
||
this.qaItem2 = Util.GetGameObject(this.otherPanel, "qaItem2")
|
||
|
||
this.scrollRoot = Util.GetGameObject(this.otherPanel, "scroll")
|
||
this.UpView = SubUIManager.Open(SubUIConfig.UpView, this.transform, { showType = UpViewOpenType.ShowLeft })
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function GiveMePowerPanel:BindEvent()
|
||
Util.AddClick(this.btnBack, function()
|
||
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
|
||
this:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.btnMyGroup, function()
|
||
--UIManager.OpenPanel(UIName.FormationPanel, FORMATION_TYPE.MAIN)
|
||
--JumpManager.GoJump(1013)
|
||
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.SAVE_FORMATION)
|
||
end)
|
||
for i = 1, 6 do
|
||
Util.AddOnceClick(this.btnAddHero[i], function()
|
||
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.SAVE_FORMATION)
|
||
end)
|
||
end
|
||
|
||
-- 初始化对象池
|
||
TempPool:Init()
|
||
--TempPool:Register("res1", this.resItem1)
|
||
TempPool:Register("res2", this.resItem2)
|
||
TempPool:Register("rmd", this.rmdItem)
|
||
--TempPool:Register("qa1", this.qaItem1)
|
||
TempPool:Register("qa2", this.qaItem2)
|
||
end
|
||
|
||
-- tab节点显示自定义
|
||
function this.TabAdapter(tab, index, status)
|
||
local tabLab = Util.GetGameObject(tab, "name")
|
||
tab:GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabSprite[status])
|
||
tabLab:GetComponent("Text").text = _TabData[index].name
|
||
tabLab:GetComponent("Text").color = _TabFontColor[status]
|
||
end
|
||
-- tab改变回调事件
|
||
function this.OnTabChange(index, lastIndex)
|
||
-- 设置显示
|
||
this._CurIndex = index
|
||
this.heroPanel:SetActive(index == 1)
|
||
this.otherPanel:SetActive(index ~= 1)
|
||
if index == 1 then
|
||
this.RefreshHeroPanelShow()
|
||
elseif index ~= 1 then
|
||
this.RefreshOtherPanelShow(index)
|
||
end
|
||
end
|
||
|
||
--- 刷新我要变强界面
|
||
-- 刷新英雄列表显示
|
||
function this.RefreshHeroPanelShow()
|
||
--
|
||
-- local power = 0
|
||
local formationData = FormationManager.GetFormationByID(FormationManager.curFormationIndex)
|
||
|
||
for i = 1, 6 do
|
||
this.groupBox[i]:SetActive(false)
|
||
this.btnAddHero[i]:SetActive(true)
|
||
end
|
||
for _, hero in pairs(formationData.teamHeroInfos) do
|
||
local pos = hero.position
|
||
this.groupBox[pos]:SetActive(true)
|
||
this.btnAddHero[pos]:SetActive(false)
|
||
|
||
|
||
local heroDId = hero.heroId
|
||
-- local allEquipAddProVal = HeroManager.CalculateHeroAllProValList(1, heroDId, false)
|
||
-- power = power + allEquipAddProVal[HeroProType.WarPower]
|
||
local heroData = HeroManager.GetSingleHeroData(heroDId)
|
||
this.SingleHeroDataShow(this.groupBox[pos], heroData, pos)
|
||
|
||
|
||
if not this._CurHeroIndex or this._CurHeroIndex > pos then
|
||
this.ChooseHero(this.groupBox[pos], heroData, pos)
|
||
end
|
||
end
|
||
this.forceValue.text = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)--power
|
||
end
|
||
|
||
-- 刷新成长选项
|
||
function this.RefreshHeroGrowList()
|
||
-- 刷新列表显示
|
||
if not this.HeroScrollView then
|
||
local height = this.heroScrollRoot.transform.rect.height
|
||
local width = this.heroScrollRoot.transform.rect.width
|
||
this.HeroScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.heroScrollRoot.transform,
|
||
this.heroScrollItem, nil, Vector2.New(width, height), 1, 1, Vector2.New(0, 10))
|
||
this.HeroScrollView.moveTween.Strength = 1
|
||
end
|
||
-- 设置我要变强界面数据显示
|
||
local _HeroStrongerData = UKnowNothingToThePowerManager.GetHeroPowerList(this.CurHeroTId)
|
||
this.HeroScrollView:SetData(_HeroStrongerData, function(index, go)
|
||
local data = _HeroStrongerData[index]
|
||
local title = Util.GetGameObject(go, "content/title"):GetComponent("Text")
|
||
local content = Util.GetGameObject(go, "content/content"):GetComponent("Text")
|
||
local progress = Util.GetGameObject(go, "content/progress"):GetComponent("Slider")
|
||
local progressText = Util.GetGameObject(go, "content/progress/Text"):GetComponent("Text")
|
||
local btnGo = Util.GetGameObject(go, "content/dealBtn")
|
||
title.text = GetLanguageStrById(data.DescFirst)
|
||
content.text = GetLanguageStrById(data.DescSecond)
|
||
|
||
local dId = data.Id
|
||
_HeroGradeProgress[go] = {
|
||
id = dId,
|
||
progress = progress,
|
||
progressText = progressText
|
||
}
|
||
local _HeroGrade = UKnowNothingToThePowerManager.GetHeroGrade(this.CurHeroDId)
|
||
local value = 0
|
||
local str = "0/0"
|
||
if _HeroGrade and _HeroGrade[dId] then
|
||
local curScore = _HeroGrade[dId].curScore
|
||
local maxScore = _HeroGrade[dId].maxScore
|
||
value = curScore/maxScore
|
||
str = string.format("%d/%d", curScore, maxScore)
|
||
end
|
||
progress.gameObject:SetActive(data.Control == 1)
|
||
progress.value = value
|
||
progressText.text = str
|
||
|
||
btnGo:SetActive(data.Jump ~= 0)
|
||
Util.AddOnceClick(btnGo, function()
|
||
if data.Jump < 0 then
|
||
local heroData = HeroManager.GetSingleHeroData(this.CurHeroDId)
|
||
local openPanle = UIManager.OpenPanel(UIName.RoleInfoPanel, heroData, HeroManager.GetAllHeroDatas(),true)
|
||
if openPanle then
|
||
openPanle.ShowGuideGo(data.Jump)
|
||
end
|
||
elseif data.Jump > 0 then
|
||
JumpManager.GoJump(data.Jump)
|
||
end
|
||
end)
|
||
end)
|
||
this.HeroScrollView:SetIndex(1)
|
||
end
|
||
|
||
|
||
-- 节点数据匹配
|
||
function this.SingleHeroDataShow(go, heroData, index)
|
||
Util.GetGameObject(go, "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality, heroData.star))
|
||
Util.GetGameObject(go, "lv/Text"):GetComponent("Text").text = heroData.lv
|
||
Util.GetGameObject(go, "icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(heroData.icon)
|
||
Util.GetGameObject(go, "posIcon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(heroData.professionIcon)
|
||
Util.GetGameObject(go, "proIcon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.changeProId))
|
||
Util.GetGameObject(go, "heroStage"):SetActive(false)
|
||
--Util.GetGameObject(go, "heroStage"):GetComponent("Image").sprite = this.spLoader:LoadSprite(HeroStageSprite[heroData.heroConfig.HeroStage])
|
||
local starGrid = Util.GetGameObject(go, "star")
|
||
local star,starType = heroData.GetStar(1)
|
||
SetHeroStars(this.spLoader, starGrid, star,starType)
|
||
Util.SetParticleSortLayer(starGrid,this.sortingOrder + 1)
|
||
-- Click On
|
||
Util.AddOnceClick(go, function()
|
||
this.ChooseHero(go, heroData, index)
|
||
if this.HeroScrollView then
|
||
this.HeroScrollView:SetIndex(1)
|
||
end
|
||
end)
|
||
Util.AddLongPressClick(go, function()
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData)
|
||
end, 0.5)
|
||
end
|
||
|
||
-- 选中英雄
|
||
function this.ChooseHero(go, heroData, index)
|
||
if this._CurHeroIndex == index then return end
|
||
this._CurHeroIndex = index
|
||
this.heroChoose.transform:SetParent(go.transform)
|
||
this.heroChoose.transform.localPosition = Vector3.New(0,0,0)
|
||
this.curHeroName.text = heroData.name
|
||
|
||
this.CurHeroDId = heroData.dynamicId
|
||
this.CurHeroTId = heroData.id
|
||
this.RefreshGrade(heroData.dynamicId)
|
||
this.RefreshHeroGrowList()
|
||
end
|
||
|
||
-- 刷新评分
|
||
function this.RefreshGrade(dId)
|
||
-- 评分
|
||
local _HeroGrade = UKnowNothingToThePowerManager.GetHeroGrade(dId)
|
||
this.curHeroProgress.value = _HeroGrade.tCurScore/_HeroGrade.tMaxScore
|
||
this.curHeroGrade.text = string.format("%d/%d", _HeroGrade.tCurScore, _HeroGrade.tMaxScore)
|
||
--for _, data in pairs(_HeroGradeProgress) do
|
||
-- local id = data.id
|
||
-- local progress = data.progress
|
||
-- local progressText = data.progressText
|
||
-- local value = 0
|
||
-- local str = "0/0"
|
||
-- if _HeroGrade and _HeroGrade[id] then
|
||
-- local curScore = _HeroGrade[id].curScore
|
||
-- local maxScore = _HeroGrade[id].maxScore
|
||
-- value = curScore/maxScore
|
||
-- str = string.format("%d/%d", curScore, maxScore)
|
||
-- end
|
||
-- progress.value = value
|
||
-- progressText.text = str
|
||
--end
|
||
end
|
||
|
||
-- 刷新其他界面
|
||
function this.RefreshOtherPanelShow(index)
|
||
-- 回收所有节点
|
||
TempPool:RecycleAll()
|
||
|
||
if this.ResScrollView then
|
||
this.ResScrollView.gameObject:SetActive(index == 2)
|
||
end
|
||
if this.RmdScrollView then
|
||
this.RmdScrollView.gameObject:SetActive(index == 3)
|
||
end
|
||
if this.QAScrollView then
|
||
this.QAScrollView.gameObject:SetActive(index == 4)
|
||
end
|
||
|
||
this._CurResIndex = nil
|
||
this._CurRmdIndex = nil
|
||
this._CurQAIndex = nil
|
||
-- 刷新显示
|
||
if index == 2 then
|
||
this.ShowResPanel()
|
||
elseif index == 3 then
|
||
this.ShowRmdPanel()
|
||
elseif index == 4 then
|
||
this.ShowQAPanel()
|
||
end
|
||
end
|
||
|
||
-- 显示资源获取方式界面
|
||
this._CurResIndex = nil
|
||
function this.ShowResPanel(index)
|
||
if not this.ResScrollView then
|
||
local rootWidth = this.scrollRoot.transform.rect.width
|
||
local rootHight = this.scrollRoot.transform.rect.height
|
||
local sv = SubUIManager.Open(SubUIConfig.ScrollFitterView, this.scrollRoot.transform,
|
||
this.resItem1, Vector2.New(rootWidth, rootHight), 1, 10)
|
||
sv.moveTween.Strength = 1
|
||
-- 保存
|
||
this.ResScrollView = sv
|
||
end
|
||
local dataList = UKnowNothingToThePowerManager.GetResGetParentList()
|
||
this.ResScrollView:SetData(dataList, function(dataIndex, node)
|
||
local data = dataList[dataIndex]
|
||
local itemBg = Util.GetGameObject(node, "content/itembg"):GetComponent("Image")
|
||
local itemIcon = Util.GetGameObject(node, "content/icon"):GetComponent("Image")
|
||
local title = Util.GetGameObject(node, "content/title"):GetComponent("Text")
|
||
local content = Util.GetGameObject(node, "content/content"):GetComponent("Text")
|
||
local dealBtn = Util.GetGameObject(node, "content/dealBtn")
|
||
local childBox = Util.GetGameObject(node, "childbox")
|
||
local itemId = data.ItemId
|
||
local itemConfig = ConfigManager.GetConfigData(ConfigName.ItemConfig,data.ItemId)
|
||
if itemConfig.ItemBaseType == ItemBaseType.SoulPrint then--魂印特殊显示
|
||
Util.GetGameObject(node, "content/icon"):SetActive(false)
|
||
Util.GetGameObject(node, "content/circleFrameBg"):SetActive(true)
|
||
Util.GetGameObject(node, "content/circleFrameBg"):GetComponent("Image").sprite=this.spLoader:LoadSprite(SoulPrintSpriteByQuantity[itemConfig.Quantity].circleBg2)
|
||
Util.GetGameObject(node,"content/circleFrameBg/Icon"):GetComponent("Image").sprite=SetIcon(this.spLoader, itemId)
|
||
Util.GetGameObject(node,"content/circleFrameBg/circleFrame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(SoulPrintSpriteByQuantity[itemConfig.Quantity].circle)
|
||
else
|
||
|
||
Util.GetGameObject(node, "content/icon"):SetActive(true)
|
||
Util.GetGameObject(node, "content/circleFrameBg"):SetActive(false)
|
||
end
|
||
itemBg.sprite = SetFrame(this.spLoader, itemId)
|
||
itemIcon.sprite = SetIcon(this.spLoader, itemId)
|
||
title.text = data.Title
|
||
content.text = data.Content
|
||
|
||
if this._CurResIndex == dataIndex then
|
||
childBox:SetActive(true)
|
||
-- 回收数据
|
||
TempPool:Recycle("res2")
|
||
local cDataList = UKnowNothingToThePowerManager.GetResGetChildList(itemId)
|
||
for _, cdata in ipairs(cDataList) do
|
||
local cNode = TempPool:GetNode("res2", childBox)
|
||
local cItemBg = Util.GetGameObject(cNode, "itembg"):GetComponent("Image")
|
||
local cItemIcon = Util.GetGameObject(cNode, "icon"):GetComponent("Image")
|
||
local cTitle = Util.GetGameObject(cNode, "title"):GetComponent("Text")
|
||
local cContent = Util.GetGameObject(cNode, "content"):GetComponent("Text")
|
||
local cDealBtn = Util.GetGameObject(cNode, "dealBtn")
|
||
if itemConfig.ItemBaseType == ItemBaseType.SoulPrint then--魂印特殊显示
|
||
Util.GetGameObject(cNode, "icon"):SetActive(false)
|
||
Util.GetGameObject(cNode, "circleFrameBg"):SetActive(true)
|
||
Util.GetGameObject(cNode, "circleFrameBg"):GetComponent("Image").sprite=this.spLoader:LoadSprite(SoulPrintSpriteByQuantity[itemConfig.Quantity].circleBg2)
|
||
Util.GetGameObject(cNode,"circleFrameBg/Icon"):GetComponent("Image").sprite=SetIcon(this.spLoader, itemId)
|
||
Util.GetGameObject(cNode,"circleFrameBg/circleFrame"):GetComponent("Image").sprite=this.spLoader:LoadSprite(SoulPrintSpriteByQuantity[itemConfig.Quantity].circle)
|
||
else
|
||
|
||
Util.GetGameObject(cNode, "icon"):SetActive(true)
|
||
Util.GetGameObject(cNode, "circleFrameBg"):SetActive(false)
|
||
end
|
||
cItemBg.sprite = SetFrame(this.spLoader, itemId)
|
||
cItemIcon.sprite = SetIcon(this.spLoader, itemId)
|
||
cTitle.text = cdata.Title
|
||
cContent.text = cdata.Content
|
||
cDealBtn:SetActive(cdata.Jump ~= 0)
|
||
Util.AddOnceClick(cDealBtn, function()
|
||
JumpManager.GoJump(cdata.Jump)
|
||
end)
|
||
end
|
||
_SetBtnStatus(dealBtn, "open")
|
||
-- LayoutUtility.GetPreferredHeight(childBox.transform)
|
||
GetPreferredHeight(childBox.transform)
|
||
else
|
||
childBox:SetActive(false)
|
||
_SetBtnStatus(dealBtn, "close")
|
||
end
|
||
|
||
Util.AddOnceClick(dealBtn, function()
|
||
if this._CurResIndex == dataIndex then
|
||
this._CurResIndex = nil
|
||
else
|
||
this._CurResIndex = dataIndex
|
||
end
|
||
this.ShowResPanel(dataIndex)
|
||
end)
|
||
end)
|
||
|
||
-- 判断是否跳转
|
||
if index then
|
||
this.ResScrollView:SetIndex(index)
|
||
end
|
||
|
||
end
|
||
|
||
|
||
-- 刷新推荐界面显示
|
||
this._CurRmdIndex = nil
|
||
function this.ShowRmdPanel(index)
|
||
|
||
if not this.RmdScrollView then
|
||
local rootWidth = this.scrollRoot.transform.rect.width
|
||
local rootHight = this.scrollRoot.transform.rect.height
|
||
local sv = SubUIManager.Open(SubUIConfig.ScrollFitterView, this.scrollRoot.transform,
|
||
this.rmdItem, Vector2.New(rootWidth, rootHight), 1, 10)
|
||
-- 保存
|
||
this.RmdScrollView = sv
|
||
end
|
||
local dataList = UKnowNothingToThePowerManager.GetRmdList()
|
||
this.RmdScrollView:SetData(dataList, function(dataIndex, node)
|
||
local data = dataList[dataIndex]
|
||
local title = Util.GetGameObject(node, "content/title"):GetComponent("Text")
|
||
local heroBox = Util.GetGameObject(node, "content/demons")
|
||
local dealBtn = Util.GetGameObject(node, "content/dealBtn")
|
||
local childBox = Util.GetGameObject(node, "childbox")
|
||
local childName = Util.GetGameObject(childBox, "name"):GetComponent("Text")
|
||
local childContent = Util.GetGameObject(childBox, "content"):GetComponent("Text")
|
||
title.text = GetLanguageStrById(data.DescFirst)
|
||
local strList = string.split(GetLanguageStrById(data.DescSecond), "#")
|
||
childName.text = Language[12233].."\n "..strList[1]--" "..strList[1] -- 空格用于调整文字的起始位置
|
||
childContent.text = "\n "..strList[2] -- 全角空格可以避免自动换行
|
||
for index, heroId in ipairs(data.ItemId) do
|
||
local heroData = ConfigManager.GetConfigData(ConfigName.HeroConfig, heroId)
|
||
local node = heroBox.transform:GetChild(index - 1).gameObject
|
||
Util.GetGameObject(node, "frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.Quality))
|
||
Util.GetGameObject(node, "icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(heroData.Icon))
|
||
Util.GetGameObject(node, "posIcon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetJobSpriteStrByJobNum(heroData.Profession))
|
||
Util.GetGameObject(node, "proIcon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.PropertyName))
|
||
Util.GetGameObject(node, "heroStage"):SetActive(false)
|
||
--Util.GetGameObject(node, "heroStage"):GetComponent("Image").sprite = this.spLoader:LoadSprite(HeroStageSprite[heroData.HeroStage])
|
||
Util.AddOnceClick(node, function()
|
||
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, heroId, heroData.Star)
|
||
end)
|
||
end
|
||
if this._CurRmdIndex == dataIndex then
|
||
childBox:SetActive(true)
|
||
_SetBtnStatus(dealBtn, "open")
|
||
-- LayoutUtility.GetPreferredHeight(childBox.transform)
|
||
GetPreferredHeight(childBox.transform)
|
||
else
|
||
childBox:SetActive(false)
|
||
_SetBtnStatus(dealBtn, "close")
|
||
end
|
||
|
||
Util.AddOnceClick(dealBtn, function()
|
||
if this._CurRmdIndex == dataIndex then
|
||
this._CurRmdIndex = nil
|
||
else
|
||
this._CurRmdIndex = dataIndex
|
||
end
|
||
this.ShowRmdPanel(dataIndex)
|
||
end)
|
||
end)
|
||
|
||
-- 判断是否跳转
|
||
if index then
|
||
this.RmdScrollView:SetIndex(index)
|
||
end
|
||
end
|
||
|
||
this._CurQAIndex = nil
|
||
function this.ShowQAPanel(index)
|
||
if not this.QAScrollView then
|
||
local rootWidth = this.scrollRoot.transform.rect.width
|
||
local rootHight = this.scrollRoot.transform.rect.height
|
||
local sv = SubUIManager.Open(SubUIConfig.ScrollFitterView, this.scrollRoot.transform,
|
||
this.qaItem1, Vector2.New(rootWidth, rootHight), 1, 10)
|
||
-- 保存
|
||
this.QAScrollView = sv
|
||
end
|
||
|
||
local QAList = UKnowNothingToThePowerManager.GetQAList()
|
||
this.QAScrollView:SetData(QAList, function(dataIndex, node)
|
||
local data = QAList[dataIndex]
|
||
local title = Util.GetGameObject(node, "content/title"):GetComponent("Text")
|
||
local dealBtn = Util.GetGameObject(node, "content/dealBtn")
|
||
local childBox = Util.GetGameObject(node, "childbox")
|
||
title.text = GetLanguageStrById(data.DescFirst)
|
||
childBox:SetActive(false)
|
||
_SetBtnStatus(dealBtn, "close")
|
||
|
||
if this._CurQAIndex == dataIndex then
|
||
childBox:SetActive(true)
|
||
-- 回收数据
|
||
TempPool:Recycle("qa2")
|
||
local qaList = UKnowNothingToThePowerManager.GetQADetailList(data.Id)
|
||
for _, qa in ipairs(qaList) do
|
||
local qaNode = TempPool:GetNode("qa2", childBox)
|
||
local qaTitle = Util.GetGameObject(qaNode, "title"):GetComponent("Text")
|
||
local qaContent = Util.GetGameObject(qaNode, "content"):GetComponent("Text")
|
||
qaTitle.text = qa.q
|
||
qaContent.text = qa.a
|
||
end
|
||
_SetBtnStatus(dealBtn, "open")
|
||
-- LayoutUtility.GetPreferredHeight(childBox.transform)
|
||
GetPreferredHeight(childBox.transform)
|
||
end
|
||
Util.AddOnceClick(dealBtn, function()
|
||
if this._CurQAIndex == dataIndex then
|
||
this._CurQAIndex = nil
|
||
else
|
||
this._CurQAIndex = dataIndex
|
||
end
|
||
this.ShowQAPanel(dataIndex)
|
||
end)
|
||
end)
|
||
-- 判断是否跳转
|
||
if index then
|
||
this.QAScrollView:SetIndex(index)
|
||
end
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function GiveMePowerPanel:AddListener()
|
||
--Game.GlobalEvent:AddEvent(GameEvent.HeroGrade.OnHeroGradeChange, this.RefreshGrade)
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function GiveMePowerPanel:RemoveListener()
|
||
--Game.GlobalEvent:RemoveEvent(GameEvent.HeroGrade.OnHeroGradeChange, this.RefreshGrade)
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function GiveMePowerPanel:OnOpen(...)
|
||
-- 检测任务
|
||
-- UKnowNothingToThePowerManager.CheckTask()
|
||
--
|
||
|
||
-- 初始化Tab管理器
|
||
this.TabCtrl = TabBox.New()
|
||
this.TabCtrl:SetTabAdapter(this.TabAdapter)
|
||
this.TabCtrl:SetChangeTabCallBack(this.OnTabChange)
|
||
this.TabCtrl:Init(this.tabbox, _TabData)
|
||
|
||
if this.TabCtrl then
|
||
this.TabCtrl:ChangeTab(1)
|
||
end
|
||
|
||
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
|
||
end
|
||
|
||
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
||
function GiveMePowerPanel:OnShow()
|
||
if this.TabCtrl and this._CurIndex == 1 then
|
||
this.TabCtrl:ChangeTab(this._CurIndex)
|
||
end
|
||
end
|
||
|
||
--界面关闭时调用(用于子类重写)
|
||
function GiveMePowerPanel:OnClose()
|
||
this._CurHeroIndex = nil
|
||
UKnowNothingToThePowerManager.ClearHeroGrade()
|
||
|
||
this._CurResIndex = nil
|
||
this._CurRmdIndex = nil
|
||
this._CurQAIndex = nil
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function GiveMePowerPanel:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
-- 销毁对象池
|
||
TempPool:Destroy()
|
||
--
|
||
this.HeroScrollView = nil
|
||
this.ResScrollView = nil
|
||
this.RmdScrollView = nil
|
||
this.QAScrollView = nil
|
||
|
||
_HeroGradeProgress = {}
|
||
|
||
SubUIManager.Close(this.UpView)
|
||
end
|
||
|
||
return GiveMePowerPanel
|
||
|