from direct.directnotify import DirectNotifyGlobal from direct.fsm import StateData 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 import StageInterior import LawbotHQExterior import LawbotHQBossBattle 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)