historical/toontown-classic.git/toontown/toon/DistributedNPCBlocker.py
2024-01-16 11:20:27 -06:00

69 lines
2.3 KiB
Python

from panda3d.core import *
from DistributedNPCToonBase import *
from direct.gui.DirectGui import *
import NPCToons
from toontown.toonbase import TTLocalizer
from direct.distributed import DistributedObject
from toontown.quest import QuestParser
class DistributedNPCBlocker(DistributedNPCToonBase):
def __init__(self, cr):
DistributedNPCToonBase.__init__(self, cr)
self.cSphereNodePath.setScale(4.5, 1.0, 6.0)
self.isLocalToon = 1
self.movie = None
return
def announceGenerate(self):
DistributedNPCToonBase.announceGenerate(self)
def initToonState(self):
self.setAnimState('neutral', 0.9, None, None)
posh = NPCToons.BlockerPositions[self._name]
self.setPos(posh[0])
self.setH(posh[1])
return
def disable(self):
if hasattr(self, 'movie') and self.movie:
self.movie.cleanup()
del self.movie
if self.isLocalToon == 1:
base.localAvatar.posCamera(0, 0)
DistributedNPCToonBase.disable(self)
def handleCollisionSphereEnter(self, collEntry):
base.cr.playGame.getPlace().fsm.request('quest', [self])
self.sendUpdate('avatarEnter', [])
def __handleUnexpectedExit(self):
self.notify.warning('unexpected exit')
def resetBlocker(self):
self.cSphereNode.setCollideMask(BitMask32())
if hasattr(self, 'movie') and self.movie:
self.movie.cleanup()
self.movie = None
self.startLookAround()
self.clearMat()
if self.isLocalToon == 1:
base.localAvatar.posCamera(0, 0)
self.freeAvatar()
self.isLocalToon = 0
return
def setMovie(self, mode, npcId, avId, timestamp):
timeStamp = ClockDelta.globalClockDelta.localElapsedTime(timestamp)
self.npcId = npcId
self.isLocalToon = avId == base.localAvatar.doId
if mode == NPCToons.BLOCKER_MOVIE_CLEAR:
return
elif mode == NPCToons.BLOCKER_MOVIE_START:
self.movie = QuestParser.NPCMoviePlayer('tutorial_blocker', base.localAvatar, self)
self.movie.play()
elif mode == NPCToons.BLOCKER_MOVIE_TIMEOUT:
return
def finishMovie(self, av, isLocalToon, elapsedTime):
self.resetBlocker()