PGRData/Script/matrix/xui/xuidlchunt/boss/XUiDlcHuntBoss.lua
2024-09-01 22:49:41 +02:00

101 lines
No EOL
3.6 KiB
Lua

local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
local XViewModelDlcHuntChapter = require("XEntity/XDlcHunt/XViewModel/XViewModelDlcHuntChapter")
local XUiDlcHuntChapterGrid = require("XUi/XUiDlcHunt/Boss/XUiDlcHuntChapterGrid")
local XUiDlcHuntUtil = require("XUi/XUiDlcHunt/XUiDlcHuntUtil")
---@class XUiDlcHuntBoss:XLuaUi
local XUiDlcHuntBoss = XLuaUiManager.Register(XLuaUi, "UiDlcHuntBoss")
function XUiDlcHuntBoss:Ctor()
---@type XViewModelDlcHuntChapter
self._ViewModel = XViewModelDlcHuntChapter.New()
self._UiChapterList = {}
end
function XUiDlcHuntBoss:OnAwake()
self:BindExitBtns()
-- uiDlcHunt hide panelAsset
self.PanelAsset.gameObject:SetActiveEx(false)
XUiHelper.RegisterClickEvent(self, self.BtnDlcYellow, self.OnClickConfirm)
end
function XUiDlcHuntBoss:OnEnable()
local chapterList = self._ViewModel:GetAllChapters()
XUiDlcHuntUtil.UpdateDynamicItem(self._UiChapterList, chapterList, self.GridBoss, XUiDlcHuntChapterGrid)
local buttonList = {}
for i = 1, #self._UiChapterList do
buttonList[i] = self._UiChapterList[i]:GetButton()
end
self.PanelBoss:Init(buttonList, function(index)
local chapter = chapterList[index]
local isUnlock, reason = chapter:IsUnlock()
if not isUnlock then
if reason == XDlcHuntWorldConfig.CHAPTER_LOCK_STATE.LOCK_FOR_TIME then
-- 挑战开启时间
local beginTime = chapter:GetChapterUnlockTime()
local timeFormat = "yyyy-MM-dd HH:mm"
local timeStr = XTime.TimestampToGameDateTimeString(beginTime, timeFormat)
XUiManager.TipMsg(XUiHelper.GetText("DlcHuntWorldLock4Time", timeStr))
-- 前置关卡未解锁
elseif reason == XDlcHuntWorldConfig.CHAPTER_LOCK_STATE.LOCK_FOR_FRONT_WORLD_NOT_PASS then
local preWorldId = chapter:GetChapterPreWorldId()
local preWorld = chapter:GetWorld(preWorldId)
if preWorld then
local name = preWorld:GetName()
XUiManager.TipMsg(XUiHelper.GetText("DlcHuntWorldLock4PreWorld", name))
end
end
return
end
local oldChapter = self._ViewModel:GetChapter()
self._ViewModel:SetChapter(chapter)
if oldChapter ~= chapter then
self:UpdateInfo()
XEventManager.DispatchEvent(XEventId.EVENT_DLC_HUNT_BOSS_SELECT_CHAPTER_UPDATE, chapter)
end
end)
local selectedIndex = false
local chapterSelected = self._ViewModel:GetChapter()
if chapterSelected then
for i = #chapterList, 1, -1 do
local chapter = chapterList[i]
if chapter == chapterSelected then
selectedIndex = i
break
end
end
else
for i = #chapterList, 1, -1 do
local chapter = chapterList[i]
if chapter:IsUnlock() then
selectedIndex = i
break
end
end
end
if selectedIndex then
self.PanelBoss:SelectIndex(selectedIndex)
end
end
function XUiDlcHuntBoss:OnClickConfirm()
local chapter = self._ViewModel:GetChapter()
self.ParentUi:DlcOpenChildUi("UiDlcHuntBossLevel", chapter)
end
function XUiDlcHuntBoss:UpdateInfo()
local chapter = self._ViewModel:GetChapter()
self.Text.text = chapter:GetName()
self.Text2.text = chapter:GetDesc()
local model1 = chapter:GetModel()
local model2 = chapter:GetModel2()
self.ParentUi:UpdateBossModel(model1, model2)
end
function XUiDlcHuntBoss:Close()
self.ParentUi:DlcCloseChildUi(self.Name)
end
return XUiDlcHuntBoss