PGRData/Script/matrix/xui/xuiequipbreakthrough/XUiEquipBreakThrough.lua
2024-09-01 22:49:41 +02:00

138 lines
No EOL
5.5 KiB
Lua

local CONDITION_COLOR = {
[true] = CS.UnityEngine.Color.black,
[false] = CS.UnityEngine.Color.gray,
}
local XUiGridCostItem = require("XUi/XUiEquipBreakThrough/XUiGridCostItem")
local XUiGridEquipReplaceAttr = require("XUi/XUiEquipReplaceNew/XUiGridEquipReplaceAttr")
local XUiEquipBreakThrough = XLuaUiManager.Register(XLuaUi, "UiEquipBreakThrough")
function XUiEquipBreakThrough:OnAwake()
self:InitAutoScript()
self.GridEquipReplaceAttr.gameObject:SetActive(false)
self.GridCostItem.gameObject:SetActive(false)
self.TxtPass.gameObject:SetActive(false)
self.TxtNotPass.gameObject:SetActive(false)
end
function XUiEquipBreakThrough:OnStart(equipId, rootUi)
self.EquipId = equipId
self.RootUi = rootUi
end
function XUiEquipBreakThrough:OnEnable(equipId)
self.EquipId = equipId or self.EquipId
self:InitEquipPreInfo()
self:InitBreakthroughCondition()
self:InitBreakthroughConsume()
self:UpdateEquipBreakThrough()
end
function XUiEquipBreakThrough:OnGetEvents()
return { XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY }
end
function XUiEquipBreakThrough:OnNotify(evt, ...)
local args = { ... }
local equipId = args[1]
if equipId ~= self.EquipId then return end
if evt == XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY then
CS.XAudioManager.PlaySound(XSoundManager.UiBasicsMusic.UiEquip_BreakThroughPopUp)
XLuaUiManager.Open("UiEquipBreakThroughPopUp", self.NextLevel, self.CurAttrMap, self.PreAttrMap, function()
self.RootUi:OpenOneChildUi("UiEquipStrengthen", self.EquipId, self.RootUi)
end)
end
end
function XUiEquipBreakThrough:InitEquipPreInfo()
local equip = XDataCenter.EquipManager.GetEquip(self.EquipId)
self.NextLevel = XDataCenter.EquipManager.GetBreakthroughLevelLimitNext(self.EquipId)
self.CurAttrMap = XDataCenter.EquipManager.GetBreakthroughPromotedAttrMap(self.EquipId)
self.PreAttrMap = XDataCenter.EquipManager.GetBreakthroughPromotedAttrMap(self.EquipId, 1)
self.TxtCurLevel.text = XDataCenter.EquipManager.GetBreakthroughLevelLimit(self.EquipId)
self.TxtNextLevel.text = self.NextLevel
self.TxtCurDes.text = CS.XTextManager.GetText("EquipBreakThroughDes" .. equip.Breakthrough)
self.TxtNextDes.text = CS.XTextManager.GetText("EquipBreakThroughDes" .. (equip.Breakthrough + 1))
self.AttrGridList = self.AttrGridList or {}
for _, attrGridList in pairs(self.AttrGridList) do
attrGridList.GameObject:SetActiveEx(false)
end
for attrOrder, attrInfo in pairs(self.CurAttrMap) do
local attrIndex = attrInfo.AttrIndex
local grid = self.AttrGridList[attrIndex]
if not grid then
local ui = CS.UnityEngine.Object.Instantiate(self.GridEquipReplaceAttr)
grid = XUiGridEquipReplaceAttr.New(ui, CS.XTextManager.GetText("EquipBreakThroughPopUpAttrPrefix", attrInfo.Name))
grid.Transform:SetParent(self.PanelAttrParent, false)
grid.GameObject:SetActiveEx(true)
self.AttrGridList[attrIndex] = grid
end
self.AttrGridList[attrIndex].GameObject:SetActiveEx(true)
self.AttrGridList[attrIndex]:UpdateData(attrInfo.Value, self.PreAttrMap[attrOrder].Value)
end
end
function XUiEquipBreakThrough:InitBreakthroughCondition()
local conditionId = XDataCenter.EquipManager.GetBreakthroughCondition(self.EquipId)
if not conditionId or conditionId == 0 then
return
end
local conditionCfg = XConditionManager.GetConditionTemplate(conditionId)
if XConditionManager.CheckCondition(conditionId) then
self.TxtPass.text = conditionCfg.Desc
self.TxtPass.gameObject:SetActive(true)
else
self.TxtNotPass.text = conditionCfg.Desc
self.TxtNotPass.gameObject:SetActive(true)
end
end
function XUiEquipBreakThrough:InitBreakthroughConsume()
local costMoney = XDataCenter.EquipManager.GetBreakthroughUseMoney(self.EquipId)
self.TxtCost.text = costMoney
self.TxtCost.color = CONDITION_COLOR[XDataCenter.ItemManager.GetCoinsNum() >= costMoney]
self.GridCostItems = self.GridCostItems or {}
for _, gridCostItems in ipairs(self.GridCostItems) do
gridCostItems.GameObject:SetActiveEx(true)
end
local consumeItems = XDataCenter.EquipManager.GetBreakthroughConsumeItems(self.EquipId)
for index, item in ipairs(consumeItems) do
local grid = self.GridCostItems[index]
if not grid then
local ui = CS.UnityEngine.Object.Instantiate(self.GridCostItem)
grid = XUiGridCostItem.New(self, ui)
grid.Transform:SetParent(self.PanelCostItem, false)
grid.GameObject:SetActiveEx(true)
self.GridCostItems[index] = grid
end
grid:Refresh(item.Id, item.Count)
end
for i = #consumeItems + 1, #self.GridCostItems do
self.GridCostItems[i].GameObject:SetActiveEx(false)
end
end
function XUiEquipBreakThrough:UpdateEquipBreakThrough()
local preBreakthrough = 1
self:SetUiSprite(self.ImgBreakthrough, XDataCenter.EquipManager.GetEquipBreakThroughBigIcon(self.EquipId))
self:SetUiSprite(self.ImgBreakthrough2, XDataCenter.EquipManager.GetEquipBreakThroughBigIcon(self.EquipId, preBreakthrough))
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiEquipBreakThrough:InitAutoScript()
self:AutoAddListener()
end
function XUiEquipBreakThrough:AutoAddListener()
self:RegisterClickEvent(self.BtnBreak, self.OnBtnBreakClick)
end
-- auto
function XUiEquipBreakThrough:OnBtnBreakClick()
XMVCA:GetAgency(ModuleId.XEquip):Breakthrough(self.EquipId)
end