Files
Endfield-Data/LuaScripts/Phase/DungeonEntry/PhaseDungeonEntry.lua
2025-12-02 20:37:18 +07:00

193 lines
4.4 KiB
Lua

local phaseBase = require_ex('Phase/Core/PhaseBase')
local PHASE_ID = PhaseId.DungeonEntry
local Category2Panel = {
[DungeonConst.DUNGEON_CATEGORY.SS] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.BossRush] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.CharTutorial] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.Challenge] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.Resource] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.Train] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.WorldLevel] = PanelId.DungeonCommonEntry,
[DungeonConst.DUNGEON_CATEGORY.HighDifficulty] = PanelId.DungeonCommonEntry,
}
PhaseDungeonEntry = HL.Class('PhaseDungeonEntry', phaseBase.PhaseBase)
PhaseDungeonEntry.m_currentPanelItem = HL.Field(HL.Forward("PhasePanelItem"))
PhaseDungeonEntry.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.ON_OPEN_DUNGEON_ENTRY_PANEL] = { 'OnOpenDungeonEntryPanel', false },
}
PhaseDungeonEntry.OnOpenDungeonEntryPanel = HL.StaticMethod(HL.Any) << function(args)
local id, enterDungeonCallback = unpack(args)
local isDungeonId = Tables.dungeonTable:ContainsKey(id)
local isDungeonSeriesId = Tables.dungeonSeriesTable:ContainsKey(id)
local dungeonId
local dungeonSeriesId
if isDungeonId then
local dungeonCfg = Tables.dungeonTable[id]
dungeonSeriesId = dungeonCfg.dungeonSeriesId
dungeonId = id
elseif isDungeonSeriesId then
dungeonSeriesId = id
else
logger.error("打开PhaseDungeonEntry的参数既不是副本系列id也不是副本id")
return
end
PhaseManager:GoToPhase(PHASE_ID, {
dungeonSeriesId = dungeonSeriesId,
dungeonId = dungeonId,
enterDungeonCallback = enterDungeonCallback,
})
end
PhaseDungeonEntry._OnInit = HL.Override() << function(self)
PhaseDungeonEntry.Super._OnInit(self)
end
PhaseDungeonEntry.PrepareTransition = HL.Override(HL.Number, HL.Boolean, HL.Opt(HL.Number)) << function(self, transitionType, fastMode, anotherPhaseId)
end
PhaseDungeonEntry._DoPhaseTransitionIn = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
local openPanelArgs = self:_PrepareOpenPanelArgs()
self.m_currentPanelItem = self:CreatePhasePanelItem(openPanelArgs.panelId, {
dungeonSeriesId = openPanelArgs.dungeonSeriesId,
dungeonId = openPanelArgs.dungeonId,
fromDialog = self.arg.fromDialog,
enterDungeonCallback = self.arg.enterDungeonCallback,
})
end
PhaseDungeonEntry._DoPhaseTransitionOut = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
end
PhaseDungeonEntry._DoPhaseTransitionBehind = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
end
PhaseDungeonEntry._DoPhaseTransitionBackToTop = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
end
PhaseDungeonEntry._OnActivated = HL.Override() << function(self)
end
PhaseDungeonEntry._OnDeActivated = HL.Override() << function(self)
end
PhaseDungeonEntry._OnDestroy = HL.Override() << function(self)
PhaseDungeonEntry.Super._OnDestroy(self)
end
PhaseDungeonEntry._OnRefresh = HL.Override() << function(self)
local openPanelArgs = self:_PrepareOpenPanelArgs()
if self.m_currentPanelItem then
self:RemovePhasePanelItem(self.m_currentPanelItem)
end
self.m_currentPanelItem = self:CreatePhasePanelItem(openPanelArgs.panelId, {
dungeonSeriesId = openPanelArgs.dungeonSeriesId,
dungeonId = openPanelArgs.dungeonId,
fromDialog = self.arg.fromDialog,
enterDungeonCallback = self.arg.enterDungeonCallback,
})
end
PhaseDungeonEntry._PrepareOpenPanelArgs = HL.Method().Return(HL.Table) << function(self)
local dungeonId = self.arg.dungeonId
local dungeonSeriesId = self.arg.dungeonSeriesId
if string.isEmpty(dungeonSeriesId) then
dungeonSeriesId = Tables.dungeonTable[dungeonId].dungeonSeriesId
end
local dungeonSeriesCfg = Tables.dungeonSeriesTable[dungeonSeriesId]
local panelId = PanelId.DungeonEntry
if Category2Panel[dungeonSeriesCfg.gameCategory] then
panelId = Category2Panel[dungeonSeriesCfg.gameCategory]
end
return {
dungeonId = dungeonId,
dungeonSeriesId = dungeonSeriesId,
panelId = panelId
}
end
HL.Commit(PhaseDungeonEntry)