PGRData/Script/matrix/xui/xuitheatre3/adventure/difficulty/XUiTheatre3Difficulty.lua
2024-09-01 22:49:41 +02:00

92 lines
No EOL
2.9 KiB
Lua

local XGridTheatre3Difficulty = require("XUi/XUiTheatre3/Adventure/Difficulty/XGridTheatre3Difficulty")
---@class XUiTheatre3Difficulty : XLuaUi
---@field _Control XTheatre3Control
local XUiTheatre3Difficulty = XLuaUiManager.Register(XLuaUi, "UiTheatre3Difficulty")
function XUiTheatre3Difficulty:OnAwake()
self:AddBtnListener()
end
function XUiTheatre3Difficulty:OnStart()
self:InitDifficultyPanelList()
self:Refresh()
end
--region Ui - Refresh
function XUiTheatre3Difficulty:Refresh()
for i, grid in ipairs(self._DifficultyPanelList) do
grid:Refresh(self._DifficultyIdList[i])
end
end
--endregion
--region Ui - Difficulty
function XUiTheatre3Difficulty:InitDifficultyPanelList()
self._DifficultyIdList = self._Control:GetDifficultyIdList()
---@type XGridTheatre3Difficulty[]
self._DifficultyPanelList = {
XGridTheatre3Difficulty.New(self.PanelDifficulty1.transform, self),
XGridTheatre3Difficulty.New(self.PanelDifficulty2.transform, self),
XGridTheatre3Difficulty.New(self.PanelDifficulty3.transform, self),
}
self._BtnList = {
self.PanelDifficulty1,
self.PanelDifficulty2,
self.PanelDifficulty3,
}
self.BtnGroup:Init(self._BtnList, handler(self, self.SelectDifficulty))
self.BtnGroup:SelectIndex(1)
end
function XUiTheatre3Difficulty:SelectDifficulty(index)
if self._SelectDifficultyId == self._DifficultyIdList[index] then
return
end
local selectAnimName = "PanelDifficulty"..index.."Big"
for i = 1, 3 do
if self._SelectDifficultyId == self._DifficultyIdList[i] then
local animName = "PanelDifficulty"..i.."Small"
self:PlayAnimation(animName)
end
end
self:PlayAnimationWithMask(selectAnimName)
self._SelectDifficultyId = self._DifficultyIdList[index]
self:Refresh()
end
--endregion
--region Ui - BtnListener
function XUiTheatre3Difficulty:AddBtnListener()
XUiHelper.RegisterClickEvent(self, self.BtnBack, self.OnBtnBackClick)
XUiHelper.RegisterClickEvent(self, self.BtnTeamInstall, self.OnBtnTeamInstallClick)
end
function XUiTheatre3Difficulty:OnBtnBackClick()
self:Close()
end
function XUiTheatre3Difficulty:OnBtnTeamInstallClick()
if not XTool.IsNumberValid(self._SelectDifficultyId) then
return
end
local cfg = self._Control:GetDifficultyById(self._SelectDifficultyId)
local conditionId = cfg.ConditionId
local isUnLock, lockDesc
if XTool.IsNumberValid(conditionId) then
isUnLock = self._Control:IsDifficultyUnlock(self._SelectDifficultyId)
lockDesc = XConditionManager.GetConditionDescById(conditionId)
else
isUnLock = true
end
if isUnLock then
self._Control:RequestAdventureSelectDifficulty(self._SelectDifficultyId, function()
self._Control:CheckAndOpenAdventureNextStep(true)
end)
else
XUiManager.TipError(lockDesc)
end
end
--endregion
return XUiTheatre3Difficulty