toontown-just-works/toontown/building/DistributedAnimatedProp.py
2024-07-07 18:08:39 -05:00

77 lines
2.3 KiB
Python

from panda3d.core import *
from direct.distributed.ClockDelta import *
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM, State
from direct.distributed import DistributedObject
class DistributedAnimatedProp(DistributedObject.DistributedObject):
def __init__(self, cr):
DistributedObject.DistributedObject.__init__(self, cr)
self.fsm = ClassicFSM.ClassicFSM('DistributedAnimatedProp', [State.State('off', self.enterOff, self.exitOff, ['playing', 'attract']), State.State('attract', self.enterAttract, self.exitAttract, ['playing']), State.State('playing', self.enterPlaying, self.exitPlaying, ['attract'])], 'off', 'off')
self.fsm.enterInitialState()
def generate(self):
DistributedObject.DistributedObject.generate(self)
def announceGenerate(self):
DistributedObject.DistributedObject.announceGenerate(self)
self.setState(self.initialState, self.initialStateTimestamp)
del self.initialState
del self.initialStateTimestamp
def disable(self):
self.fsm.request('off')
DistributedObject.DistributedObject.disable(self)
def delete(self):
del self.fsm
DistributedObject.DistributedObject.delete(self)
def setPropId(self, propId):
self.propId = propId
def setAvatarInteract(self, avatarId):
self.avatarId = avatarId
def setOwnerDoId(self, ownerDoId):
self.ownerDoId = ownerDoId
def setState(self, state, timestamp):
if self.isGenerated():
self.fsm.request(state, [globalClockDelta.localElapsedTime(timestamp)])
else:
self.initialState = state
self.initialStateTimestamp = timestamp
def enterTrigger(self, args = None):
messenger.send('DistributedAnimatedProp_enterTrigger')
self.sendUpdate('requestInteract')
def exitTrigger(self, args = None):
messenger.send('DistributedAnimatedProp_exitTrigger')
self.sendUpdate('requestExit')
def rejectInteract(self):
self.cr.playGame.getPlace().setState('walk')
def avatarExit(self, avatarId):
pass
def enterOff(self):
pass
def exitOff(self):
pass
def enterAttract(self, ts):
pass
def exitAttract(self):
pass
def enterPlaying(self, ts):
pass
def exitPlaying(self):
pass