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

218 lines
4.8 KiB
Lua

local phaseBase = require_ex('Phase/Core/PhaseBase')
local PHASE_ID = PhaseId.RegionMap
PhaseRegionMap = HL.Class('PhaseRegionMap', phaseBase.PhaseBase)
local Panels = { PanelId.RegionMap, PanelId.RegionMap3D }
PhaseRegionMap.s_messages = HL.StaticField(HL.Table) << {
[MessageConst.ON_COMMON_BACK_CLICKED] = { 'OnCommonBackClicked', true },
[MessageConst.ON_CLICK_REGIONMAP_LEVEL_BTN] = { 'OnClickRegionMapLevelBtn' ,true},
[MessageConst.ON_CLICK_REGIONMAP_LOCK] = { 'OnClickRegionMapLock' ,true},
}
PhaseRegionMap._OnInit = HL.Override() << function(self)
PhaseRegionMap.Super._OnInit(self)
if not self.arg then
self.arg = {
domainId = Utils.getCurDomainId()
}
end
if not self.arg.domainId then
local hasValue
local levelBasicInfo
hasValue, levelBasicInfo = DataManager.levelBasicInfoTable:TryGetValue(self.arg.levelId)
if hasValue and not string.isEmpty(levelBasicInfo.domainName) then
self.arg.domainId = levelBasicInfo.domainName
else
self.arg.domainId = Utils.getCurDomainId()
end
end
end
PhaseRegionMap.PrepareTransition = HL.Override(HL.Number, HL.Boolean, HL.Opt(HL.Number)) << function(self, transitionType, fastMode, anotherPhaseId)
if transitionType == PhaseConst.EPhaseState.TransitionIn then
UIManager:PreloadPanelAsset(PanelId.RegionMap3D, PHASE_ID)
local assetPath
local _, domainData = Tables.domainDataTable:TryGetValue(self.arg.domainId)
if domainData then
assetPath = string.format(MapConst.UI_DOMAIN_MAP_PATH, domainData.domainMap)
end
if assetPath then
self.m_resourceLoader:LoadGameObjectAsync(assetPath, function(go)
logger.info(assetPath, "预载完成")
end)
end
end
if not fastMode and (transitionType == PhaseConst.EPhaseState.TransitionIn or transitionType == PhaseConst.EPhaseState.TransitionOut) then
Notify(MessageConst.PREPARE_BLOCK_GLITCH_TRANSITION)
coroutine.waitForRenderDone()
end
end
PhaseRegionMap._DoPhaseTransitionIn = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
if not fastMode then
Notify(MessageConst.SHOW_BLOCK_GLITCH_TRANSITION)
end
end
PhaseRegionMap._OnActivated = HL.Override() << function(self)
UIManager:Hide(PanelId.Touch)
self:_InitPhaseItems()
end
PhaseRegionMap._OnDeActivated = HL.Override() << function(self)
self:_ClearCameraCfg()
end
PhaseRegionMap._DoPhaseTransitionOut = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
if not fastMode then
Notify(MessageConst.SHOW_BLOCK_GLITCH_TRANSITION)
end
end
PhaseRegionMap._DoPhaseTransitionBehind = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
end
PhaseRegionMap._OnDestroy = HL.Override() << function(self)
UIManager:Show(PanelId.Touch)
end
PhaseRegionMap.OnCommonBackClicked = HL.Method() << function (self)
if self.m_closeLock then
return
end
MapUtils.closeMapRelatedPhase()
end
PhaseRegionMap.m_closeLock = HL.Field(HL.Boolean) << false
PhaseRegionMap.OnClickRegionMapLock = HL.Method() << function (self)
self.m_closeLock = true
end
PhaseRegionMap.OnClickRegionMapLevelBtn = HL.Method(HL.Table) << function (self, data)
self.m_RegionMap3DPanel.uiCtrl:OnClickLevelBtn(data.levelId, data.insId)
end
PhaseRegionMap.m_RegionMap3DPanel = HL.Field(HL.Forward("PhasePanelItem"))
PhaseRegionMap.m_RegionMapPanel = HL.Field(HL.Forward("PhasePanelItem"))
PhaseRegionMap.m_inited = HL.Field(HL.Boolean) << false
PhaseRegionMap._InitPhaseItems = HL.Method() << function(self)
if not self.m_inited then
for _, panelId in pairs(Panels) do
self:CreatePhasePanelItem(panelId, self.arg)
end
self.m_RegionMap3DPanel = self:_GetPanelPhaseItem(PanelId.RegionMap3D)
self.m_RegionMapPanel = self:_GetPanelPhaseItem(PanelId.RegionMap)
UIManager:Close(PanelId.Map)
self:_InitCameraCfg()
Notify(MessageConst.ON_INITIALIZE_REGION_MAP_CONTROLLER, {
regionMap3dPanelGroupId = self.m_RegionMap3DPanel.uiCtrl.view.inputGroup.groupId
})
end
self.m_inited = true
self.m_closeLock = false
end
PhaseRegionMap._InitCameraCfg = HL.Method() << function(self)
UIManager:TryToggleMainCamera(self.m_RegionMap3DPanel.uiCtrl.panelCfg, true)
CameraManager:SetUICameraPostProcess(true)
CameraManager:AddUICamCullingMaskConfig("RegionMap", UIConst.LAYERS.UIPP)
end
PhaseRegionMap._ClearCameraCfg = HL.Method() << function(self)
CameraManager:SetUICameraPostProcess(false)
CameraManager:RemoveUICamCullingMaskConfig("RegionMap")
end
HL.Commit(PhaseRegionMap)