def setupElevator(self, elevatorModel): self.elevatorModel = elevatorModel self.leftDoor = self.elevatorModel.find('**/left-door') if self.leftDoor.isEmpty(): self.leftDoor = self.elevatorModel.find('**/left_door') self.rightDoor = self.elevatorModel.find('**/right-door') if self.rightDoor.isEmpty(): self.rightDoor = self.elevatorModel.find('**/right_door') self.openSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_sliding.ogg') self.finalOpenSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_final.ogg') self.closeSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_sliding.ogg') self.finalCloseSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_final.ogg') self.openDoors = ElevatorUtils.getOpenInterval( self, self.leftDoor, self.rightDoor, self.openSfx, self.finalOpenSfx, self.elevatorType) self.closeDoors = ElevatorUtils.getCloseInterval( self, self.leftDoor, self.rightDoor, self.closeSfx, self.finalCloseSfx, self.elevatorType) self.closeDoors.start() self.closeDoors.finish()
def setupElevator(self, elevatorModel): self.elevatorModel = elevatorModel self.leftDoor = self.elevatorModel.find('**/left-door') if self.leftDoor.isEmpty(): self.leftDoor = self.elevatorModel.find('**/left_door') self.rightDoor = self.elevatorModel.find('**/right-door') if self.rightDoor.isEmpty(): self.rightDoor = self.elevatorModel.find('**/right_door') self.openSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_sliding.ogg') self.finalOpenSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_final.ogg') self.closeSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_sliding.ogg') self.finalCloseSfx = base.loadSfx( 'phase_9/audio/sfx/CHQ_FACT_door_open_final.ogg') self.openDoors = ElevatorUtils.getOpenInterval(self, self.leftDoor, self.rightDoor, self.openSfx, self.finalOpenSfx, self.elevatorType) self.closeDoors = ElevatorUtils.getCloseInterval( self, self.leftDoor, self.rightDoor, self.closeSfx, self.finalCloseSfx, self.elevatorType) self.closeDoors.start() self.closeDoors.finish()
def __playElevator(self, ts, name, callback): SuitHs = [] SuitPositions = [] if self.floorModel: self.floorModel.removeNode() self.floorModel = None if self.cage: self.cage = None if self.currentFloor == 0: SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions if self.isBossFloor(self.currentFloor): self.notify.info('__playElevator: currentFloor %s is boss' % self.currentFloor) self.barrelRoom.unload() if self.FOType: penthouseName = SUITE_DICT.get(self.FOType) for i in range(4): self.floorModel = loader.loadModel( 'phase_5/models/cogdominium/%s' % penthouseName) self.cage = self.floorModel.find('**/cage') pos = self.cage.getPos() self.cagePos = [] for height in self.cageHeights: self.cagePos.append(Point3(pos[0], pos[1], height)) self.cageDoor = self.floorModel.find('**/cage_door') self.cageDoor.wrtReparentTo(self.cage) if self.FOType: paintingModelName = PAINTING_DICT.get(self.FOType) for i in xrange(4): paintingModel = loader.loadModel( 'phase_5/models/cogdominium/%s' % paintingModelName) loc = self.floorModel.find('**/loc_painting%d' % (i + 1)) paintingModel.reparentTo(loc) if not self.floorModel.find('**/trophyCase').isEmpty(): for i in range(4): goldEmblem = loader.loadModel( 'phase_5/models/cogdominium/tt_m_ara_crg_goldTrophy.bam' ) loc = self.floorModel.find('**/gold_0%d' % (i + 1)) goldEmblem.reparentTo(loc) for i in range(20): silverEmblem = loader.loadModel( 'phase_5/models/cogdominium/tt_m_ara_crg_silverTrophy.bam' ) loc = self.floorModel.find('**/silver_0%d' % (i + 1)) silverEmblem.reparentTo(loc) SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions self.__makeShopOwnerNpc() else: if self._wantBarrelRoom: self.barrelRoom.load() self.barrelRoom.hide() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions if self.floorModel: self.floorModel.reparentTo(render) if self.isBossFloor(self.currentFloor): self.notify.info('Load boss_suit_office') elevIn = self.floorModel.find( CogdoGameConsts.PenthouseElevatorInPath).copyTo(render) elevOut = self.floorModel.find( CogdoGameConsts.PenthouseElevatorOutPath) frame = self.elevatorModelOut.find('**/frame') if not frame.isEmpty(): frame.hide() frame = self.elevatorModelIn.find('**/frame') if not frame.isEmpty(): frame.hide() self.elevatorModelOut.reparentTo(elevOut) self.elevatorModelOut.setY(0) else: elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') elif self._wantBarrelRoom and self.barrelRoom.isLoaded( ) and self.currentFloor == 2 and self.FOType == 'l': elevIn = self.barrelRoom.model.find( CogdoBarrelRoomConsts.BarrelRoomElevatorInPath) elevOut = self.barrelRoom.model.find( CogdoBarrelRoomConsts.BarrelRoomElevatorOutPath) y = elevOut.getY(render) elevOut = elevOut.copyTo(render) elevOut.setY(render, y - 0.75) else: floorModel = loader.loadModel( 'phase_7/models/modules/boss_suit_office') elevIn = floorModel.find('**/elevator-in').copyTo(render) elevOut = floorModel.find('**/elevator-out').copyTo(render) floorModel.removeNode() self.elevIn = elevIn self.elevOut = elevOut self._haveEntranceElevator.set(True) for index in range(len(self.suits)): if not self.suits[index].isEmpty(): self.suits[index].setPos(SuitPositions[index]) if len(self.suits) > 2: self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH(170) self.suits[index].loop('neutral') for toon in self.toons: toon.reparentTo(self.elevatorModelIn) index = self.toonIds.index(toon.doId) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop('neutral') self.elevatorModelIn.reparentTo(elevIn) self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setP(0) camera.setPos(0, 14, 4) base.playMusic(self.elevatorMusic, looping=1, volume=0.8) track = Sequence( Func(base.transitions.noTransitions), ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval(self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL), Func(camera.wrtReparentTo, render)) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track
def __playElevator(self, ts, name, callback): # Load the floor model SuitHs = [] # Heading angles SuitPositions = [] if self.floorModel: self.floorModel.removeNode() self.floorModel = None if (self.currentFloor == 0): # bottom floor SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions if self.isBossFloor(self.currentFloor): # Top floor self.floorModel = loader.loadModel( 'phase_7/models/modules/boss_suit_office') SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions else: # middle floor SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions if self.floorModel: self.floorModel.reparentTo(render) # We need to name this something more useful (and we'll need the # location of the opposite elevator as well) elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') else: # TODO: TEMP floorModel = loader.loadModel( 'phase_7/models/modules/boss_suit_office') elevIn = floorModel.find('**/elevator-in').copyTo(render) elevOut = floorModel.find('**/elevator-out').copyTo(render) floorModel.removeNode() # store elevOut until it's needed self.elevOut = elevOut # Position the suits assert (len(self.suits) <= 4) for index in range(len(self.suits)): assert(self.notify.debug('setting suit: %d to pos: %s' % \ (self.suits[index].doId, SuitPositions[index]))) self.suits[index].setPos(SuitPositions[index]) if (len(self.suits) > 2): self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH( 170 ) # if there's 2 or 1 suits, make them face fwd since there's no other suits they would be to be talking to self.suits[index].loop('neutral') # Position the toons for toon in self.toons: toon.reparentTo(self.elevatorModelIn) assert (self.toonIds.count(toon.doId) == 1) index = self.toonIds.index(toon.doId) assert (index >= 0 and index <= 3) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop('neutral') # Show the elevator and position it in the correct place for the floor self.elevatorModelIn.reparentTo(elevIn) # Start with the doors in closed position self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) # Position the camera behind the toons camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setPos(0, 14, 4) # Play elevator music base.playMusic(self.elevatorMusic, looping=1, volume=0.8) # Ride the elevator, then open the doors. track = Sequence( ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval(self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL), Func(camera.wrtReparentTo, render), ) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track
def __playElevator(self, ts, name, callback): SuitHs = [] SuitPositions = [] if self.floorModel: self.floorModel.removeNode() self.floorModel = None if self.cage: self.cage = None if self.currentFloor == 0: SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions if self.isBossFloor(self.currentFloor): self.notify.info('__playElevator: currentFloor %s is boss' % self.currentFloor) self.barrelRoom.unload() if self.FOType: penthouseName = SUITE_DICT.get(self.FOType) for i in xrange(4): self.floorModel = loader.loadModel('phase_5/models/cogdominium/%s' % penthouseName) self.cage = self.floorModel.find('**/cage') pos = self.cage.getPos() self.cagePos = [] for height in self.cageHeights: self.cagePos.append(Point3(pos[0], pos[1], height)) self.cageDoor = self.floorModel.find('**/cage_door') self.cageDoor.wrtReparentTo(self.cage) if self.FOType: paintingModelName = PAINTING_DICT.get(self.FOType) for i in xrange(4): paintingModel = loader.loadModel('phase_5/models/cogdominium/%s' % paintingModelName) loc = self.floorModel.find('**/loc_painting%d' % (i + 1)) paintingModel.reparentTo(loc) if not self.floorModel.find('**/trophyCase').isEmpty(): for i in xrange(4): goldEmblem = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_goldTrophy.bam') loc = self.floorModel.find('**/gold_0%d' % (i + 1)) goldEmblem.reparentTo(loc) for i in xrange(20): silverEmblem = loader.loadModel('phase_5/models/cogdominium/tt_m_ara_crg_silverTrophy.bam') loc = self.floorModel.find('**/silver_0%d' % (i + 1)) silverEmblem.reparentTo(loc) SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions self.__makeShopOwnerNpc() else: if self._wantBarrelRoom: self.barrelRoom.load() self.barrelRoom.hide() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions if self.floorModel: self.floorModel.reparentTo(render) if self.isBossFloor(self.currentFloor): self.notify.info('Load boss_suit_office') elevIn = self.floorModel.find(CogdoGameConsts.PenthouseElevatorInPath).copyTo(render) elevOut = self.floorModel.find(CogdoGameConsts.PenthouseElevatorOutPath) frame = self.elevatorModelOut.find('**/frame') if not frame.isEmpty(): frame.hide() frame = self.elevatorModelIn.find('**/frame') if not frame.isEmpty(): frame.hide() self.elevatorModelOut.reparentTo(elevOut) self.elevatorModelOut.setY(0) else: elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') elif self._wantBarrelRoom and self.barrelRoom.isLoaded() and self.currentFloor == 2 and self.FOType == 'l': #i know this is really ugly elevIn = self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorInPath) elevOut = self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorOutPath) y = elevOut.getY(render) elevOut = elevOut.copyTo(render) elevOut.setY(render, y - 0.75) else: floorModel = loader.loadModel('phase_7/models/modules/boss_suit_office') elevIn = floorModel.find('**/elevator-in').copyTo(render) elevOut = floorModel.find('**/elevator-out').copyTo(render) floorModel.removeNode() self.elevIn = elevIn self.elevOut = elevOut self._haveEntranceElevator.set(True) for index in xrange(len(self.suits)): if not self.suits[index].isEmpty(): self.suits[index].setPos(SuitPositions[index]) if len(self.suits) > 2: self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH(170) self.suits[index].loop('neutral') for toon in self.toons: toon.reparentTo(self.elevatorModelIn) index = self.toonIds.index(toon.doId) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop('neutral') self.elevatorModelIn.reparentTo(elevIn) self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setP(0) camera.setPos(0, 14, 4) base.playMusic(self.elevatorMusic, looping=1, volume=0.8) track = Sequence(Func(base.transitions.noTransitions), ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval(self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL), Func(camera.wrtReparentTo, render)) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track
def __playElevator(self, ts, name, callback): SuitHs = [] SuitPositions = [] if self.floorModel: self.floorModel.removeNode() if self.skyModel: self.skyModel.removeNode() if self.currentFloor == 0: self.floorModel = loader.loadModel( 'phase_7/models/modules/suit_interior') SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions elif self.currentFloor == self.numFloors - 1 and self.numFloors >= 5: self.floorModel = loader.loadModel( 'phase_7/models/modules/suit_building_roof') self.skyModel = self.getSky() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions elif self.currentFloor == self.numFloors - 1 or self.currentFloor == self.numFloors - 2 and self.numFloors >= 5: self.floorModel = loader.loadModel( 'phase_7/models/modules/boss_suit_office') SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions else: self.floorModel = loader.loadModel( 'phase_7/models/modules/cubicle_room') self.skyModel = self.getSky() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions self.floorModel.reparentTo(render) elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') if self.skyModel: self.skyModel.reparentTo(render) self.skyModel.setColor(SKY_COLORS[self.currentFloor - 1]) self.skyModel.setZ(-100) self.skyBoxLoop = self.skyModel.hprInterval(300, Vec3(360, 0, 0)) self.skyBoxLoop.loop() for index in xrange(len(self.suits)): self.suits[index].setPos(SuitPositions[index]) if len(self.suits) > 2: self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH(170) self.suits[index].loop('neutral') for toon in self.toons: toon.reparentTo(self.elevatorModelIn) index = self.toonIds.index(toon.doId) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop('neutral') self.elevatorModelIn.reparentTo(elevIn) self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) self.elevatorModelOut.reparentTo(elevOut) self.leftDoorOut.setPos(3.5, 0, 0) self.rightDoorOut.setPos(-3.5, 0, 0) camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setPos(0, 14, 4) base.playMusic(self.elevatorMusic, looping=1, volume=0.8) track = Sequence( ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval(self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL), Func(camera.wrtReparentTo, render)) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track
def __playElevator(self, ts, name, callback): # Load the floor model SuitHs = [] # Heading angles SuitPositions = [] if self.floorModel: self.floorModel.removeNode() self.floorModel = None if self.cage: self.cage = None if (self.currentFloor == 0): # bottom floor SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions if self.isBossFloor(self.currentFloor): # Top floor self.barrelRoom.unload() self.floorModel = loader.loadModel( 'phase_5/models/cogdominium/tt_m_ara_crg_penthouse') self.cage = self.floorModel.find('**/cage') pos = self.cage.getPos() self.cagePos = [] for height in self.cageHeights: self.cagePos.append(Point3(pos[0], pos[1], height)) self.cageDoor = self.floorModel.find('**/cage_door') self.cageDoor.wrtReparentTo(self.cage) if self.FOType: paintingModelName = PAINTING_DICT.get(self.FOType) for i in range(4): paintingModel = loader.loadModel( 'phase_5/models/cogdominium/%s' % paintingModelName) loc = self.floorModel.find('**/loc_painting%d' % (i + 1)) paintingModel.reparentTo(loc) SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions self.__makeShopOwnerNpc() else: if self._wantBarrelRoom: self.barrelRoom.load() self.barrelRoom.hide() # middle floor SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions if self.floorModel: self.floorModel.reparentTo(render) if self.isBossFloor(self.currentFloor): self.notify.debug('Load boss_suit_office') elevIn = self.floorModel.find( CogdoGameConsts.PenthouseElevatorInPath).copyTo(render) elevOut = self.floorModel.find( CogdoGameConsts.PenthouseElevatorOutPath) frame = self.elevatorModelOut.find('**/frame') if not frame.isEmpty(): frame.hide() frame = self.elevatorModelIn.find('**/frame') if not frame.isEmpty(): frame.hide() self.elevatorModelOut.reparentTo(elevOut) else: # We need to name this something more useful (and we'll need the # location of the opposite elevator as well) elevIn = self.floorModel.find('**/elevator-in') elevOut = self.floorModel.find('**/elevator-out') elif self._wantBarrelRoom and self.barrelRoom.isLoaded(): elevIn = self.barrelRoom.dummyElevInNode elevOut = self.barrelRoom.model.find( CogdoBarrelRoomConsts.BarrelRoomElevatorOutPath) y = elevOut.getY(render) elevOut = elevOut.copyTo(render) elevOut.setY(render, y - 0.75) else: # TODO: TEMP floorModel = loader.loadModel( 'phase_7/models/modules/boss_suit_office') elevIn = floorModel.find('**/elevator-in').copyTo(render) elevOut = floorModel.find('**/elevator-out').copyTo(render) floorModel.removeNode() self.elevIn = elevIn # store elevOut until it's needed self.elevOut = elevOut self._haveEntranceElevator.set(True) # Position the suits assert (len(self.suits) <= 4) for index in range(len(self.suits)): assert(self.notify.debug('setting suit: %d to pos: %s' % \ (self.suits[index].doId, SuitPositions[index]))) self.suits[index].setPos(SuitPositions[index]) if (len(self.suits) > 2): self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH( 170 ) # if there's 2 or 1 suits, make them face fwd since there's no other suits they would be to be talking to self.suits[index].loop('neutral') # Position the toons for toon in self.toons: toon.reparentTo(self.elevatorModelIn) assert (self.toonIds.count(toon.doId) == 1) index = self.toonIds.index(toon.doId) assert (index >= 0 and index <= 3) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop('neutral') # Show the elevator and position it in the correct place for the floor self.elevatorModelIn.reparentTo(elevIn) # Start with the doors in closed position self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) # Position the camera behind the toons camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setP(0) camera.setPos(0, 14, 4) # Play elevator music base.playMusic(self.elevatorMusic, looping=1, volume=0.8) # Ride the elevator, then open the doors. track = Sequence( Func(base.transitions.noTransitions), ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval(self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL), Func(camera.wrtReparentTo, render), ) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track
def __playElevator(self, ts, name, callback): SuitHs = [] SuitPositions = [] if self.floorModel: self.floorModel.removeNode() self.floorModel = None if self.cage: self.cage = None if self.currentFloor == 0: SuitHs = self.BottomFloor_SuitHs SuitPositions = self.BottomFloor_SuitPositions if self.isBossFloor(self.currentFloor): self.barrelRoom.unload() self.floorModel = loader.loadModel("phase_5/models/cogdominium/tt_m_ara_crg_penthouse") self.cage = self.floorModel.find("**/cage") pos = self.cage.getPos() self.cagePos = [] for height in self.cageHeights: self.cagePos.append(Point3(pos[0], pos[1], height)) self.cageDoor = self.floorModel.find("**/cage_door") self.cageDoor.wrtReparentTo(self.cage) if self.FOType: paintingModelName = PAINTING_DICT.get(self.FOType) for i in range(4): paintingModel = loader.loadModel("phase_5/models/cogdominium/%s" % paintingModelName) loc = self.floorModel.find("**/loc_painting%d" % (i + 1)) paintingModel.reparentTo(loc) SuitHs = self.BossOffice_SuitHs SuitPositions = self.BossOffice_SuitPositions self.__makeShopOwnerNpc() else: if self._wantBarrelRoom: self.barrelRoom.load() self.barrelRoom.hide() SuitHs = self.Cubicle_SuitHs SuitPositions = self.Cubicle_SuitPositions if self.floorModel: self.floorModel.reparentTo(render) if self.isBossFloor(self.currentFloor): self.notify.debug("Load boss_suit_office") elevIn = self.floorModel.find(CogdoGameConsts.PenthouseElevatorInPath).copyTo(render) elevOut = self.floorModel.find(CogdoGameConsts.PenthouseElevatorOutPath) frame = self.elevatorModelOut.find("**/frame") if not frame.isEmpty(): frame.hide() frame = self.elevatorModelIn.find("**/frame") if not frame.isEmpty(): frame.hide() self.elevatorModelOut.reparentTo(elevOut) else: elevIn = self.floorModel.find("**/elevator-in") elevOut = self.floorModel.find("**/elevator-out") elif self._wantBarrelRoom and self.barrelRoom.isLoaded(): elevIn = self.barrelRoom.dummyElevInNode elevOut = self.barrelRoom.model.find(CogdoBarrelRoomConsts.BarrelRoomElevatorOutPath) y = elevOut.getY(render) elevOut = elevOut.copyTo(render) elevOut.setY(render, y - 0.75) else: floorModel = loader.loadModel("phase_7/models/modules/boss_suit_office") elevIn = floorModel.find("**/elevator-in").copyTo(render) elevOut = floorModel.find("**/elevator-out").copyTo(render) floorModel.removeNode() self.elevIn = elevIn self.elevOut = elevOut self._haveEntranceElevator.set(True) for index in range(len(self.suits)): self.suits[index].setPos(SuitPositions[index]) if len(self.suits) > 2: self.suits[index].setH(SuitHs[index]) else: self.suits[index].setH(170) self.suits[index].loop("neutral") for toon in self.toons: toon.reparentTo(self.elevatorModelIn) index = self.toonIds.index(toon.doId) toon.setPos(ElevatorPoints[index][0], ElevatorPoints[index][1], ElevatorPoints[index][2]) toon.setHpr(180, 0, 0) toon.loop("neutral") self.elevatorModelIn.reparentTo(elevIn) self.leftDoorIn.setPos(3.5, 0, 0) self.rightDoorIn.setPos(-3.5, 0, 0) camera.reparentTo(self.elevatorModelIn) camera.setH(180) camera.setP(0) camera.setPos(0, 14, 4) base.playMusic(self.elevatorMusic, looping=1, volume=0.8) track = Sequence( Func(base.transitions.noTransitions), ElevatorUtils.getRideElevatorInterval(ELEVATOR_NORMAL), ElevatorUtils.getOpenInterval( self, self.leftDoorIn, self.rightDoorIn, self.openSfx, None, type=ELEVATOR_NORMAL ), Func(camera.wrtReparentTo, render), ) for toon in self.toons: track.append(Func(toon.wrtReparentTo, render)) track.append(Func(callback)) track.start(ts) self.activeIntervals[name] = track return