from direct.directnotify import DirectNotifyGlobal from toontown.battle import BattlePlace from direct.fsm import ClassicFSM, State from direct.fsm import State from toontown.toonbase import ToontownGlobals from toontown.building import Elevator from panda3d.core import * from toontown.coghq import CogHQExterior class BossbotHQExterior(CogHQExterior.CogHQExterior): notify = DirectNotifyGlobal.directNotify.newCategory('BossbotHQExterior') def __init__(self, loader, parentFSM, doneEvent): CogHQExterior.CogHQExterior.__init__(self, loader, parentFSM, doneEvent) self.elevatorDoneEvent = 'elevatorDone' self.trains = None self.fsm.addState(State.State('elevator', self.enterElevator, self.exitElevator, ['walk', 'stopped'])) state = self.fsm.getStateNamed('walk') state.addTransition('elevator') state = self.fsm.getStateNamed('stopped') state.addTransition('elevator') state = self.fsm.getStateNamed('stickerBook') state.addTransition('elevator') return def enterElevator(self, distElevator, skipDFABoard = 0): self.accept(self.elevatorDoneEvent, self.handleElevatorDone) self.elevator = Elevator.Elevator(self.fsm.getStateNamed('elevator'), self.elevatorDoneEvent, distElevator) if skipDFABoard: self.elevator.skipDFABoard = 1 self.elevator.setReverseBoardingCamera(True) self.elevator.load() self.elevator.enter() def exitElevator(self): self.ignore(self.elevatorDoneEvent) self.elevator.unload() self.elevator.exit() del self.elevator def detectedElevatorCollision(self, distElevator): self.fsm.request('elevator', [distElevator]) def handleElevatorDone(self, doneStatus): self.notify.debug('handling elevator done event') where = doneStatus['where'] if where == 'reject': if hasattr(base.localAvatar, 'elevatorNotifier') and base.localAvatar.elevatorNotifier.isNotifierOpen(): pass else: self.fsm.request('walk') elif where == 'exit': self.fsm.request('walk') elif where == 'countryClubInterior': self.doneStatus = doneStatus messenger.send(self.doneEvent) else: self.notify.error('Unknown mode: ' + where + ' in handleElevatorDone')