from direct.directnotify import DirectNotifyGlobal from direct.fsm import StateData from . import CogHQLoader from toontown.toonbase import ToontownGlobals from direct.gui import DirectGui from toontown.toonbase import TTLocalizer from toontown.toon import Toon from direct.fsm import State from . import StageInterior from . import LawbotHQExterior from . import LawbotHQBossBattle from . import LawbotOfficeExterior aspectSF = 0.7227 class LawbotCogHQLoader(CogHQLoader.CogHQLoader): notify = DirectNotifyGlobal.directNotify.newCategory('LawbotCogHQLoader') def __init__(self, hood, parentFSMState, doneEvent): CogHQLoader.CogHQLoader.__init__(self, hood, parentFSMState, doneEvent) self.fsm.addState(State.State('stageInterior', self.enterStageInterior, self.exitStageInterior, ['quietZone', 'cogHQExterior'])) self.fsm.addState(State.State('factoryExterior', self.enterFactoryExterior, self.exitFactoryExterior, ['quietZone', 'cogHQExterior'])) for stateName in ['start', 'cogHQExterior', 'quietZone']: state = self.fsm.getStateNamed(stateName) state.addTransition('stageInterior') for stateName in ['quietZone']: state = self.fsm.getStateNamed(stateName) state.addTransition('factoryExterior') self.musicFile = 'phase_11/audio/bgm/LB_courtyard.mid' self.cogHQExteriorModelPath = 'phase_11/models/lawbotHQ/LawbotPlaza' self.factoryExteriorModelPath = 'phase_11/models/lawbotHQ/LB_DA_Lobby' self.cogHQLobbyModelPath = 'phase_11/models/lawbotHQ/LB_CH_Lobby' self.geom = None return def load(self, zoneId): CogHQLoader.CogHQLoader.load(self, zoneId) Toon.loadSellbotHQAnims() def unloadPlaceGeom(self): if self.geom: self.geom.removeNode() self.geom = None CogHQLoader.CogHQLoader.unloadPlaceGeom(self) return def loadPlaceGeom(self, zoneId): self.notify.info('loadPlaceGeom: %s' % zoneId) zoneId = zoneId - zoneId % 100 self.notify.debug('zoneId = %d ToontownGlobals.LawbotHQ=%d' % (zoneId, ToontownGlobals.LawbotHQ)) if zoneId == ToontownGlobals.LawbotHQ: self.geom = loader.loadModel(self.cogHQExteriorModelPath) ug = self.geom.find('**/underground') ug.setBin('ground', -10) brLinkTunnel = self.geom.find('**/TunnelEntrance1') brLinkTunnel.setName('linktunnel_br_3326_DNARoot') elif zoneId == ToontownGlobals.LawbotOfficeExt: self.geom = loader.loadModel(self.factoryExteriorModelPath) ug = self.geom.find('**/underground') ug.setBin('ground', -10) elif zoneId == ToontownGlobals.LawbotLobby: if base.config.GetBool('want-qa-regression', 0): self.notify.info('QA-REGRESSION: COGHQ: Visit LawbotLobby') self.notify.debug('cogHQLobbyModelPath = %s' % self.cogHQLobbyModelPath) self.geom = loader.loadModel(self.cogHQLobbyModelPath) ug = self.geom.find('**/underground') ug.setBin('ground', -10) else: self.notify.warning('loadPlaceGeom: unclassified zone %s' % zoneId) CogHQLoader.CogHQLoader.loadPlaceGeom(self, zoneId) def unload(self): CogHQLoader.CogHQLoader.unload(self) Toon.unloadSellbotHQAnims() def enterStageInterior(self, requestStatus): self.placeClass = StageInterior.StageInterior self.stageId = requestStatus['stageId'] self.enterPlace(requestStatus) def exitStageInterior(self): self.exitPlace() self.placeClass = None return def getExteriorPlaceClass(self): self.notify.debug('getExteriorPlaceClass') return LawbotHQExterior.LawbotHQExterior def getBossPlaceClass(self): self.notify.debug('getBossPlaceClass') return LawbotHQBossBattle.LawbotHQBossBattle def enterFactoryExterior(self, requestStatus): self.placeClass = LawbotOfficeExterior.LawbotOfficeExterior self.enterPlace(requestStatus) self.hood.spawnTitleText(requestStatus['zoneId']) def exitFactoryExterior(self): taskMgr.remove('titleText') self.hood.hideTitleText() self.exitPlace() self.placeClass = None return def enterCogHQBossBattle(self, requestStatus): self.notify.debug('LawbotCogHQLoader.enterCogHQBossBattle') CogHQLoader.CogHQLoader.enterCogHQBossBattle(self, requestStatus) base.cr.forbidCheesyEffects(1) def exitCogHQBossBattle(self): self.notify.debug('LawbotCogHQLoader.exitCogHQBossBattle') CogHQLoader.CogHQLoader.exitCogHQBossBattle(self) base.cr.forbidCheesyEffects(0)