oldschool-toontown/toontown/toon/Motion.py
2019-12-30 01:07:56 -05:00

110 lines
3.4 KiB
Python

from direct.fsm import StateData
from toontown.toonbase import ToontownGlobals
from direct.directnotify import DirectNotifyGlobal
from direct.fsm import ClassicFSM, State
from direct.fsm import State
from . import TTEmote
from otp.avatar import Emote
class Motion(StateData.StateData):
notify = DirectNotifyGlobal.directNotify.newCategory('Motion')
def __init__(self, toon):
self.lt = toon
self.doneEvent = 'motionDone'
StateData.StateData.__init__(self, self.doneEvent)
self.fsm = ClassicFSM.ClassicFSM('Motion', [State.State('off', self.enterOff, self.exitOff),
State.State('neutral', self.enterNeutral, self.exitNeutral),
State.State('walk', self.enterWalk, self.exitWalk),
State.State('run', self.enterRun, self.exitRun),
State.State('sad-neutral', self.enterSadNeutral, self.exitSadNeutral),
State.State('sad-walk', self.enterSadWalk, self.exitSadWalk),
State.State('catch-neutral', self.enterCatchNeutral, self.exitCatchNeutral),
State.State('catch-run', self.enterCatchRun, self.exitCatchRun),
State.State('catch-eatneutral', self.enterCatchEatNeutral, self.exitCatchEatNeutral),
State.State('catch-eatnrun', self.enterCatchEatNRun, self.exitCatchEatNRun)], 'off', 'off')
self.fsm.enterInitialState()
def delete(self):
del self.fsm
def load(self):
pass
def unload(self):
pass
def enter(self):
self.notify.debug('enter')
def exit(self):
self.fsm.requestFinalState()
def enterOff(self, rate = 0):
self.notify.debug('enterOff')
def exitOff(self):
pass
def enterNeutral(self, rate = 0):
self.notify.debug('enterNeutral')
def exitNeutral(self):
self.notify.debug('exitNeutral')
def enterWalk(self, rate = 0):
self.notify.debug('enterWalk')
Emote.globalEmote.disableBody(self.lt, 'enterWalk')
def exitWalk(self):
self.notify.debug('exitWalk')
Emote.globalEmote.releaseBody(self.lt, 'exitWalk')
def enterRun(self, rate = 0):
self.notify.debug('enterRun')
Emote.globalEmote.disableBody(self.lt, 'enterRun')
def exitRun(self):
self.notify.debug('exitRun')
Emote.globalEmote.releaseBody(self.lt, 'exitRun')
def enterSadNeutral(self, rate = 0):
self.notify.debug('enterSadNeutral')
def exitSadNeutral(self):
self.notify.debug('exitSadNeutral')
def enterSadWalk(self, rate = 0):
self.notify.debug('enterSadWalk')
def exitSadWalk(self):
pass
def enterCatchNeutral(self, rate = 0):
self.notify.debug('enterCatchNeutral')
def exitCatchNeutral(self):
self.notify.debug('exitCatchNeutral')
def enterCatchRun(self, rate = 0):
self.notify.debug('enterCatchRun')
def exitCatchRun(self):
self.notify.debug('exitCatchRun')
def enterCatchEatNeutral(self, rate = 0):
self.notify.debug('enterCatchEatNeutral')
def exitCatchEatNeutral(self):
self.notify.debug('exitCatchEatNeutral')
def enterCatchEatNRun(self, rate = 0):
self.notify.debug('enterCatchEatNRun')
def exitCatchEatNRun(self):
self.notify.debug('exitCatchEatNRun')
def setState(self, anim, rate):
toon = self.lt
if toon.playingAnim != anim:
self.fsm.request(anim, [rate])