101 lines
3.6 KiB
Lua
101 lines
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
|