189 lines
4.7 KiB
Lua
189 lines
4.7 KiB
Lua
local phaseBase = require_ex('Phase/Core/PhaseBase')
|
|
local PHASE_ID = PhaseId.FacTechTree
|
|
|
|
local DEFAULT_FAC_TECH_PACKAGE_ID = "tech_group_tundra"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree = HL.Class('PhaseFacTechTree', phaseBase.PhaseBase)
|
|
|
|
|
|
PhaseFacTechTree.m_currentPanelItem = HL.Field(HL.Forward("PhasePanelItem"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree.s_messages = HL.StaticField(HL.Table) << {
|
|
|
|
[MessageConst.FAC_TECH_TREE_OPEN_PACKAGE_PANEL] = { 'OpenPackagePanel', true },
|
|
[MessageConst.FAC_TECH_TREE_OPEN_TREE_PANEL] = { 'OpenTreePanel', true },
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._OnInit = HL.Override() << function(self)
|
|
PhaseFacTechTree.Super._OnInit(self)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._DoPhaseTransitionIn = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
local facTechTreeSystem = GameInstance.player.facTechTreeSystem
|
|
|
|
if self.arg then
|
|
|
|
local techId = self.arg.techId
|
|
local packageId = self.arg.packageId
|
|
local layerId = self.arg.layerId
|
|
|
|
if not string.isEmpty(techId) then
|
|
|
|
local techCfg = Tables.facSTTNodeTable[techId]
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, {
|
|
techId = techId,
|
|
packageId = techCfg.groupId
|
|
})
|
|
return
|
|
end
|
|
|
|
if not string.isEmpty(layerId) then
|
|
local layerCfg = Tables.facSTTLayerTable[layerId]
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, {
|
|
layerId = layerId,
|
|
packageId = layerCfg.groupId
|
|
})
|
|
return
|
|
end
|
|
|
|
if not string.isEmpty(packageId) then
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, {
|
|
packageId = packageId
|
|
})
|
|
return
|
|
end
|
|
else
|
|
|
|
local success, levelBasicInfo = DataManager.levelBasicInfoTable:TryGetValue(GameWorld.worldInfo.curLevelId)
|
|
if not success then
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechPackage)
|
|
return
|
|
end
|
|
|
|
local isInSpaceShip = Utils.isInSpaceShip()
|
|
local domainId = isInSpaceShip and GameInstance.player.inventory.spaceshipDomainId or levelBasicInfo.domainName
|
|
local hasDomain = not string.isEmpty(domainId)
|
|
local facTechPackageId = hasDomain and Tables.domainDataTable[domainId].facTechPackageId or DEFAULT_FAC_TECH_PACKAGE_ID
|
|
|
|
if facTechTreeSystem:PackageIsLocked(facTechPackageId) or facTechTreeSystem:PackageIsHidden(facTechPackageId) then
|
|
facTechPackageId = DEFAULT_FAC_TECH_PACKAGE_ID
|
|
end
|
|
|
|
if facTechPackageId ~= DEFAULT_FAC_TECH_PACKAGE_ID then
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, { packageId = facTechPackageId })
|
|
else
|
|
if facTechTreeSystem:PackageIsLocked(DEFAULT_FAC_TECH_PACKAGE_ID) then
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechPackage)
|
|
else
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, { packageId = DEFAULT_FAC_TECH_PACKAGE_ID })
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._DoPhaseTransitionOut = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._DoPhaseTransitionBehind = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode, args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._DoPhaseTransitionBackToTop = HL.Override(HL.Boolean, HL.Opt(HL.Table)) << function(self, fastMode,
|
|
args)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._OnActivated = HL.Override() << function(self)
|
|
end
|
|
|
|
|
|
|
|
PhaseFacTechTree._OnDeActivated = HL.Override() << function(self)
|
|
end
|
|
|
|
|
|
|
|
PhaseFacTechTree._OnDestroy = HL.Override() << function(self)
|
|
PhaseFacTechTree.Super._OnDestroy(self)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree._OnRefresh = HL.Override() << function(self)
|
|
if self.arg == nil or string.isEmpty(self.arg.techId) or self.m_currentPanelItem.uiCtrl.AutoSelect == nil then
|
|
return
|
|
end
|
|
|
|
self.m_currentPanelItem.uiCtrl:AutoSelect(self.arg.techId)
|
|
end
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree.OpenTreePanel = HL.Method(HL.Any) << function(self, args)
|
|
local arg = unpack(args)
|
|
|
|
self:RemovePhasePanelItem(self.m_currentPanelItem)
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechTree, { packageId = arg })
|
|
end
|
|
|
|
|
|
|
|
|
|
PhaseFacTechTree.OpenPackagePanel = HL.Method(HL.Table) << function(self, args)
|
|
self:RemovePhasePanelItem(self.m_currentPanelItem)
|
|
self.m_currentPanelItem = self:CreatePhasePanelItem(PanelId.FacTechPackage, args)
|
|
end
|
|
|
|
HL.Commit(PhaseFacTechTree)
|
|
|