314 lines
15 KiB
Lua
314 lines
15 KiB
Lua
require("Base/BasePanel")
|
|
EquipTreasureResonancePanel = Inherit(BasePanel)
|
|
local this = EquipTreasureResonancePanel
|
|
local jewelConfig = ConfigManager.GetConfig(ConfigName.JewelConfig)
|
|
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
|
local TabBox = require("Modules/Common/TabBox")
|
|
local _TabData = {
|
|
[1] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12638] },
|
|
[2] = { default = "r_hero_xuanze_002", select = "r_hero_xuanze_001", name = Language[12639] },
|
|
}
|
|
local _TabFontColor = {
|
|
default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
|
|
select = Color.New(154 / 255, 78 / 255, 36 / 255, 1)
|
|
}
|
|
local curHeroData
|
|
local curTabIndex = 1 --当前是强化 还是 精炼
|
|
local equipTreasureList = {} --宝器对象
|
|
local curJewelResonanceConfig --当前共鸣静态数据
|
|
local nextJewelResonanceConfig --下一共鸣静态数据
|
|
local curProList = {} --当前共鸣属性
|
|
local nextProList = {} --下一共鸣属性
|
|
--初始化组件(用于子类重写)
|
|
function EquipTreasureResonancePanel:InitComponent()
|
|
this.spLoader = SpriteLoader.New()
|
|
this.TabCtrl = TabBox.New()
|
|
this.tabBox = Util.GetGameObject(self.transform, "TabBox")
|
|
this.btnBack = Util.GetGameObject(self.transform, "btnBack")
|
|
this.curProListCurLv = Util.GetGameObject(self.transform, "materialImageBg/curProList/curLv"):GetComponent("Text")
|
|
this.nextProListCurLv = Util.GetGameObject(self.transform, "materialImageBg/nextProList/curLv"):GetComponent("Text")
|
|
this.nextProList = Util.GetGameObject(self.transform, "materialImageBg/nextProList")
|
|
this.nextHint = Util.GetGameObject(self.transform, "materialImageBg/nextProList/Text"):GetComponent("Text")
|
|
this.hintInfo = Util.GetGameObject(self.transform, "titleBg/hintInfo"):GetComponent("Text")
|
|
for i = 1, 2 do
|
|
equipTreasureList[i] = Util.GetGameObject(self.transform, "grid/equipTreasure (" .. i .. ")")
|
|
curProList[i] = Util.GetGameObject(self.transform, "materialImageBg/curProList/pro/Pro (" .. i .. ")")
|
|
nextProList[i] = Util.GetGameObject(self.transform, "materialImageBg/nextProList/pro/Pro (" .. i .. ")")
|
|
end
|
|
this.targetObj = Util.GetGameObject(self.transform, "titleBg/Image (2)")
|
|
end
|
|
|
|
--绑定事件(用于子类重写)
|
|
function EquipTreasureResonancePanel:BindEvent()
|
|
Util.AddClick(this.btnBack, function()
|
|
self:ClosePanel()
|
|
end)
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function EquipTreasureResonancePanel:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange)
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function EquipTreasureResonancePanel:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Treasure.TreasureLvUp, this.CurrEquipDataChange)
|
|
end
|
|
|
|
function this.CurrEquipDataChange()
|
|
this.OnShowData()
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function EquipTreasureResonancePanel:OnOpen(_curHeroData, _curTabIndex)
|
|
curHeroData = _curHeroData
|
|
curTabIndex = _curTabIndex or 1
|
|
end
|
|
|
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|
function EquipTreasureResonancePanel:OnShow()
|
|
this.TabCtrl:SetTabAdapter(this.TabAdapter)
|
|
this.TabCtrl:Init(this.tabBox, _TabData, curTabIndex)
|
|
this.TabCtrl:SetChangeTabCallBack(this.SwitchView)
|
|
this.OnShowData()
|
|
end
|
|
|
|
--限时内容
|
|
function this.OnShowData()
|
|
--获取穿戴宝物强化/精炼的最小等级
|
|
local minLv --最小等级
|
|
local maxlv --最大等级
|
|
for i = 1, #curHeroData.jewels do
|
|
local curEquipTreasureData = EquipTreasureManager.GetSingleEquipTreasreData(curHeroData.jewels[i])
|
|
if curTabIndex == 1 then
|
|
if minLv then
|
|
if curEquipTreasureData.lv < minLv then
|
|
minLv = curEquipTreasureData.lv
|
|
end
|
|
else
|
|
minLv = curEquipTreasureData.lv
|
|
end
|
|
if maxlv then
|
|
if curEquipTreasureData.maxLv < maxlv then
|
|
maxlv = curEquipTreasureData.maxLv
|
|
end
|
|
else
|
|
maxlv = curEquipTreasureData.maxLv
|
|
end
|
|
this.hintInfo.text = Language[12640]
|
|
elseif curTabIndex == 2 then
|
|
if minLv then
|
|
if curEquipTreasureData.refineLv < minLv then
|
|
minLv = curEquipTreasureData.refineLv
|
|
end
|
|
else
|
|
minLv = curEquipTreasureData.refineLv
|
|
end
|
|
if maxlv then
|
|
if curEquipTreasureData.maxRefineLv < maxlv then
|
|
maxlv = curEquipTreasureData.maxRefineLv
|
|
end
|
|
else
|
|
maxlv = curEquipTreasureData.maxRefineLv
|
|
end
|
|
this.hintInfo.text = Language[12641]
|
|
end
|
|
end
|
|
LogBlue("minLv:" .. minLv)
|
|
LogBlue("maxlv:" .. maxlv)
|
|
curJewelResonanceConfig = nil
|
|
nextJewelResonanceConfig = nil
|
|
local allCurTypeJewelResonanceConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.JewelResonanceConfig, "Type",
|
|
curTabIndex)
|
|
table.sort(allCurTypeJewelResonanceConfig, function(a, b)
|
|
return a.SortId < b.SortId
|
|
end)
|
|
LogBlue(#allCurTypeJewelResonanceConfig)
|
|
for i = 1, #allCurTypeJewelResonanceConfig do
|
|
--获取当前强化/精炼 大师等级数据
|
|
if allCurTypeJewelResonanceConfig[i].Level <= minLv then
|
|
if curJewelResonanceConfig then
|
|
if curJewelResonanceConfig.SortId < allCurTypeJewelResonanceConfig[i].SortId then
|
|
curJewelResonanceConfig = allCurTypeJewelResonanceConfig[i]
|
|
end
|
|
else
|
|
curJewelResonanceConfig = allCurTypeJewelResonanceConfig[i]
|
|
end
|
|
end
|
|
--获取下一级强化/精炼 大师等级数据
|
|
if allCurTypeJewelResonanceConfig[i].Level > minLv and allCurTypeJewelResonanceConfig[i].Level <= maxlv then
|
|
if curJewelResonanceConfig then
|
|
if nextJewelResonanceConfig == nil then
|
|
if allCurTypeJewelResonanceConfig[i].SortId == curJewelResonanceConfig.SortId + 1 then
|
|
nextJewelResonanceConfig = allCurTypeJewelResonanceConfig[i]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
--curJewelResonanceConfig = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.JewelResonanceConfig,"Type",curTabIndex,"SortId",nextJewelResonanceConfig.SortId - 1)
|
|
for i = 1, #curHeroData.jewels do
|
|
this.OnShowSingleEquipTreasure(equipTreasureList[i], curHeroData.jewels[i])
|
|
end
|
|
this.OnShowPro()
|
|
end
|
|
|
|
function this.OnShowSingleEquipTreasure(go, equipTreasureDid)
|
|
local isMaxLv = false
|
|
local curEquipTreasureData = EquipTreasureManager.GetSingleEquipTreasreData(equipTreasureDid)
|
|
if not curEquipTreasureData then return end
|
|
local configData = jewelConfig[curEquipTreasureData.id]
|
|
Util.GetGameObject(go.transform, "equip/icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(
|
|
curEquipTreasureData.icon)
|
|
Util.GetGameObject(go.transform, "equip/proImage"):GetComponent("Image").sprite = this.spLoader:LoadSprite(
|
|
GetProStrImageByProNum(configData.Race))
|
|
Util.GetGameObject(go.transform, "equip/frame"):GetComponent("Image").sprite = this.spLoader:LoadSprite(
|
|
curEquipTreasureData.frame)
|
|
Util.GetGameObject(go.transform, "name"):GetComponent("Text").text = GetLanguageStrById(curEquipTreasureData
|
|
.itemConfig.Name)
|
|
Util.GetGameObject(go.transform, "equip/strongLv"):GetComponent("Text").text = curEquipTreasureData.lv
|
|
Util.GetGameObject(go.transform, "equip/refineLv"):GetComponent("Text").text = curEquipTreasureData.refineLv
|
|
if curTabIndex == 1 then
|
|
if nextJewelResonanceConfig and nextJewelResonanceConfig.Level then
|
|
if curEquipTreasureData.lv >= curEquipTreasureData.maxLv then
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[10209]
|
|
else
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[12642]
|
|
end
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = curEquipTreasureData.lv ..
|
|
"/" .. nextJewelResonanceConfig.Level
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = curEquipTreasureData.lv /
|
|
nextJewelResonanceConfig.Level
|
|
else
|
|
if curEquipTreasureData.lv >= curEquipTreasureData.maxLv then
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = Language[12643]
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[10209]
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = 1
|
|
else
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[12642]
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = curEquipTreasureData.lv ..
|
|
"/" .. curJewelResonanceConfig.Level
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = curEquipTreasureData
|
|
.lv / curJewelResonanceConfig.Level
|
|
end
|
|
end
|
|
|
|
--点击强化按钮
|
|
Util.AddOnceClick(Util.GetGameObject(go.transform, "btn"), function()
|
|
if curEquipTreasureData.lv == curEquipTreasureData.maxLv then
|
|
PopupTipPanel.ShowTip(Language[12644])
|
|
return
|
|
end
|
|
UIManager.OpenPanel(UIName.EquipTreasureStrongPopup, curEquipTreasureData, 1)
|
|
end)
|
|
elseif curTabIndex == 2 then
|
|
if nextJewelResonanceConfig and nextJewelResonanceConfig.Level then
|
|
if curEquipTreasureData.refineLv >= curEquipTreasureData.maxRefineLv then
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[10209]
|
|
else
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[12645]
|
|
end
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = curEquipTreasureData.refineLv ..
|
|
"/" .. nextJewelResonanceConfig.Level
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = curEquipTreasureData
|
|
.refineLv / nextJewelResonanceConfig.Level
|
|
else
|
|
if curEquipTreasureData.refineLv >= curEquipTreasureData.maxRefineLv then
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = Language[12643]
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[10209]
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = 1
|
|
else
|
|
Util.GetGameObject(go.transform, "btn/Text"):GetComponent("Text").text = Language[12645]
|
|
Util.GetGameObject(go.transform, "progress"):GetComponent("Text").text = curEquipTreasureData.refineLv ..
|
|
"/" .. curJewelResonanceConfig.Level
|
|
Util.GetGameObject(go.transform, "equip/proBar"):GetComponent("Image").fillAmount = curEquipTreasureData
|
|
.refineLv / curJewelResonanceConfig.Level
|
|
end
|
|
end
|
|
--点击精炼按钮
|
|
Util.AddOnceClick(Util.GetGameObject(go.transform, "btn"), function()
|
|
if curEquipTreasureData.refineLv == curEquipTreasureData.maxRefineLv then
|
|
PopupTipPanel.ShowTip(Language[12644])
|
|
return
|
|
end
|
|
UIManager.OpenPanel(UIName.EquipTreasureStrongPopup, curEquipTreasureData, 2)
|
|
end)
|
|
end
|
|
end
|
|
|
|
--属性展示
|
|
function this.OnShowPro()
|
|
local currLv = 0
|
|
if curJewelResonanceConfig and curJewelResonanceConfig.Level then
|
|
for i = 1, #curJewelResonanceConfig.Property do
|
|
Util.GetGameObject(curProList[i], "curProName"):GetComponent("Text").text = GetLanguageStrById(
|
|
propertyConfig[curJewelResonanceConfig.Property[i][1]].Info)
|
|
Util.GetGameObject(curProList[i], "curProVal"):GetComponent("Text").text = GetPropertyFormatStr(
|
|
propertyConfig[curJewelResonanceConfig.Property[i][1]].Style, curJewelResonanceConfig.Property[i][2])
|
|
end
|
|
currLv = curJewelResonanceConfig.Level
|
|
else
|
|
this.curProListCurLv.text = 0
|
|
if nextJewelResonanceConfig and nextJewelResonanceConfig.Property then
|
|
for i = 1, #nextJewelResonanceConfig.Property do
|
|
Util.GetGameObject(curProList[i], "curProName"):GetComponent("Text").text = GetLanguageStrById(
|
|
propertyConfig[nextJewelResonanceConfig.Property[i][1]].Info)
|
|
Util.GetGameObject(curProList[i], "curProVal"):GetComponent("Text").text = GetPropertyFormatStr(
|
|
propertyConfig[nextJewelResonanceConfig.Property[i][1]].Style, 0)
|
|
end
|
|
end
|
|
end
|
|
if curTabIndex == 1 then
|
|
this.curProListCurLv.text = string.format(Language[12646], curJewelResonanceConfig.SortId)
|
|
else
|
|
this.curProListCurLv.text = string.format(Language[12647], curJewelResonanceConfig.SortId)
|
|
end
|
|
if nextJewelResonanceConfig and nextJewelResonanceConfig.Level then
|
|
this.nextProList:SetActive(true)
|
|
this.targetObj.gameObject:SetActive(true)
|
|
if curTabIndex == 1 then
|
|
this.nextProListCurLv.text = string.format(Language[12648], nextJewelResonanceConfig.SortId)
|
|
this.nextHint.text = string.format(Language[12649], nextJewelResonanceConfig.Level)
|
|
else
|
|
this.nextProListCurLv.text = string.format(Language[12650], nextJewelResonanceConfig.SortId)
|
|
this.nextHint.text = string.format(Language[12651], nextJewelResonanceConfig.Level)
|
|
end
|
|
|
|
for i = 1, #nextJewelResonanceConfig.Property do
|
|
Util.GetGameObject(nextProList[i], "curProName"):GetComponent("Text").text = GetLanguageStrById(
|
|
propertyConfig[nextJewelResonanceConfig.Property[i][1]].Info)
|
|
Util.GetGameObject(nextProList[i], "curProVal"):GetComponent("Text").text = GetPropertyFormatStr(
|
|
propertyConfig[nextJewelResonanceConfig.Property[i][1]].Style, nextJewelResonanceConfig.Property[i][2])
|
|
end
|
|
else
|
|
this.nextProList:SetActive(false)
|
|
this.targetObj.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
|
|
-- tab节点显示自定义
|
|
function this.TabAdapter(tab, index, status)
|
|
local tabLab = Util.GetGameObject(tab, "Text")
|
|
local tabImage = Util.GetGameObject(tab, "Image")
|
|
tabImage: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)
|
|
curTabIndex = index
|
|
this.OnShowData()
|
|
end
|
|
|
|
--界面关闭时调用(用于子类重写)
|
|
function EquipTreasureResonancePanel:OnClose()
|
|
end
|
|
|
|
--界面销毁时调用(用于子类重写)
|
|
function EquipTreasureResonancePanel:OnDestroy()
|
|
this.spLoader:Destroy()
|
|
end
|
|
|
|
return EquipTreasureResonancePanel
|