2022-12-16 18:40:57 -06:00
|
|
|
from panda3d.core import *
|
2019-11-02 17:27:54 -05:00
|
|
|
from direct.distributed.ClockDelta import *
|
|
|
|
from direct.interval.IntervalGlobal import *
|
|
|
|
from toontown.building.ElevatorConstants import *
|
|
|
|
from toontown.building.ElevatorUtils import *
|
|
|
|
from toontown.building import DistributedElevatorFloor
|
|
|
|
from toontown.building import DistributedElevator
|
|
|
|
from toontown.toonbase import ToontownGlobals
|
|
|
|
from direct.fsm import ClassicFSM
|
|
|
|
from direct.fsm import State
|
|
|
|
from toontown.hood import ZoneUtil
|
|
|
|
from toontown.toonbase import TTLocalizer
|
|
|
|
|
|
|
|
class DistributedLawOfficeElevatorInt(DistributedElevatorFloor.DistributedElevatorFloor):
|
|
|
|
|
|
|
|
def __init__(self, cr):
|
|
|
|
DistributedElevatorFloor.DistributedElevatorFloor.__init__(self, cr)
|
|
|
|
|
|
|
|
def generate(self):
|
|
|
|
DistributedElevator.DistributedElevator.generate(self)
|
|
|
|
self.accept('LawOffice_Spec_Loaded', self.__placeElevator)
|
|
|
|
|
|
|
|
def delete(self):
|
|
|
|
self.elevatorModel.removeNode()
|
|
|
|
del self.elevatorModel
|
|
|
|
DistributedElevatorFloor.DistributedElevatorFloor.delete(self)
|
|
|
|
self.ignore('LawOffice_Spec_Loaded')
|
|
|
|
|
|
|
|
def setEntranceId(self, entranceId):
|
|
|
|
self.entranceId = entranceId
|
|
|
|
if self.entranceId == 0:
|
|
|
|
self.elevatorModel.setPosHpr(62.74, -85.31, 0.0, 2.0, 0.0, 0.0)
|
|
|
|
elif self.entranceId == 1:
|
|
|
|
self.elevatorModel.setPosHpr(-162.25, 26.43, 0.0, 269.0, 0.0, 0.0)
|
|
|
|
else:
|
|
|
|
self.notify.error('Invalid entranceId: %s' % entranceId)
|
|
|
|
|
|
|
|
def setupElevator(self):
|
|
|
|
self.elevatorModel = loader.loadModel('phase_4/models/modules/elevator')
|
|
|
|
self.elevatorModel.reparentTo(render)
|
|
|
|
self.elevatorModel.setScale(1.05)
|
|
|
|
self.leftDoor = self.elevatorModel.find('**/left-door')
|
|
|
|
self.rightDoor = self.elevatorModel.find('**/right-door')
|
|
|
|
self.elevatorModel.find('**/light_panel').removeNode()
|
|
|
|
self.elevatorModel.find('**/light_panel_frame').removeNode()
|
|
|
|
DistributedElevatorFloor.DistributedElevatorFloor.setupElevator(self)
|
|
|
|
|
|
|
|
def __placeElevator(self):
|
|
|
|
self.notify.debug('PLACING ELEVATOR FOOL!!')
|
|
|
|
if self.isEntering:
|
|
|
|
elevatorNode = render.find('**/elevator_origin')
|
|
|
|
if not elevatorNode.isEmpty():
|
|
|
|
self.elevatorModel.setPos(0, 0, 0)
|
|
|
|
self.elevatorModel.reparentTo(elevatorNode)
|
|
|
|
else:
|
|
|
|
self.notify.debug('NO NODE elevator_origin!!')
|
|
|
|
else:
|
|
|
|
elevatorNode = render.find('**/SlidingDoor')
|
|
|
|
if not elevatorNode.isEmpty():
|
|
|
|
self.elevatorModel.setPos(0, 0, -15)
|
|
|
|
self.elevatorModel.reparentTo(elevatorNode)
|
|
|
|
else:
|
|
|
|
self.notify.debug('NO NODE SlidingDoor!!')
|
|
|
|
|
|
|
|
def getElevatorModel(self):
|
|
|
|
return self.elevatorModel
|
|
|
|
|
|
|
|
def setBldgDoId(self, bldgDoId):
|
|
|
|
self.bldg = None
|
|
|
|
self.setupElevator()
|
|
|
|
return
|
|
|
|
|
|
|
|
def getZoneId(self):
|
|
|
|
return 0
|
|
|
|
|
|
|
|
def __doorsClosed(self, zoneId):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def setLawOfficeInteriorZone(self, zoneId):
|
|
|
|
if self.localToonOnBoard:
|
|
|
|
hoodId = self.cr.playGame.hood.hoodId
|
|
|
|
doneStatus = {'loader': 'cogHQLoader',
|
|
|
|
'where': 'factoryInterior',
|
|
|
|
'how': 'teleportIn',
|
|
|
|
'zoneId': zoneId,
|
|
|
|
'hoodId': hoodId}
|
|
|
|
self.cr.playGame.getPlace().elevator.signalDone(doneStatus)
|