2022-12-16 18:40:57 -06:00
|
|
|
from panda3d.core import *
|
2019-11-02 17:27:54 -05:00
|
|
|
from direct.fsm import ClassicFSM, State
|
|
|
|
from direct.fsm import State
|
|
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
|
|
from toontown.distributed.DelayDeletable import DelayDeletable
|
2019-12-30 00:07:56 -06:00
|
|
|
from . import DistributedSuitBase
|
2019-11-02 17:27:54 -05:00
|
|
|
|
|
|
|
class DistributedTutorialSuit(DistributedSuitBase.DistributedSuitBase, DelayDeletable):
|
|
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedTutorialSuit')
|
|
|
|
|
|
|
|
def __init__(self, cr):
|
|
|
|
try:
|
|
|
|
self.DistributedSuit_initialized
|
|
|
|
except:
|
|
|
|
self.DistributedSuit_initialized = 1
|
|
|
|
DistributedSuitBase.DistributedSuitBase.__init__(self, cr)
|
|
|
|
self.fsm = ClassicFSM.ClassicFSM('DistributedSuit', [State.State('Off', self.enterOff, self.exitOff, ['Walk', 'Battle']),
|
|
|
|
State.State('Walk', self.enterWalk, self.exitWalk, ['WaitForBattle', 'Battle']),
|
|
|
|
State.State('Battle', self.enterBattle, self.exitBattle, []),
|
|
|
|
State.State('WaitForBattle', self.enterWaitForBattle, self.exitWaitForBattle, ['Battle'])], 'Off', 'Off')
|
|
|
|
self.fsm.enterInitialState()
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
def generate(self):
|
|
|
|
DistributedSuitBase.DistributedSuitBase.generate(self)
|
|
|
|
|
|
|
|
def announceGenerate(self):
|
|
|
|
DistributedSuitBase.DistributedSuitBase.announceGenerate(self)
|
|
|
|
self.setState('Walk')
|
|
|
|
|
|
|
|
def disable(self):
|
|
|
|
self.notify.debug('DistributedSuit %d: disabling' % self.getDoId())
|
|
|
|
self.setState('Off')
|
|
|
|
DistributedSuitBase.DistributedSuitBase.disable(self)
|
|
|
|
|
|
|
|
def delete(self):
|
|
|
|
try:
|
|
|
|
self.DistributedSuit_deleted
|
|
|
|
except:
|
|
|
|
self.DistributedSuit_deleted = 1
|
|
|
|
self.notify.debug('DistributedSuit %d: deleting' % self.getDoId())
|
|
|
|
del self.fsm
|
|
|
|
DistributedSuitBase.DistributedSuitBase.delete(self)
|
|
|
|
|
|
|
|
def d_requestBattle(self, pos, hpr):
|
|
|
|
self.cr.playGame.getPlace().setState('WaitForBattle')
|
|
|
|
self.sendUpdate('requestBattle', [pos[0],
|
|
|
|
pos[1],
|
|
|
|
pos[2],
|
|
|
|
hpr[0],
|
|
|
|
hpr[1],
|
|
|
|
hpr[2]])
|
|
|
|
return None
|
|
|
|
|
|
|
|
def __handleToonCollision(self, collEntry):
|
|
|
|
toonId = base.localAvatar.getDoId()
|
|
|
|
self.notify.debug('Distributed suit: requesting a Battle with ' + 'toon: %d' % toonId)
|
|
|
|
self.d_requestBattle(self.getPos(), self.getHpr())
|
|
|
|
self.setState('WaitForBattle')
|
|
|
|
return None
|
|
|
|
|
|
|
|
def enterWalk(self):
|
|
|
|
self.enableBattleDetect('walk', self.__handleToonCollision)
|
|
|
|
self.loop('walk', 0)
|
|
|
|
pathPoints = [Vec3(55, 15, -0.5),
|
|
|
|
Vec3(55, 25, -0.5),
|
|
|
|
Vec3(25, 25, -0.5),
|
|
|
|
Vec3(25, 15, -0.5),
|
|
|
|
Vec3(55, 15, -0.5)]
|
|
|
|
self.tutWalkTrack = self.makePathTrack(self, pathPoints, 4.5, 'tutFlunkyWalk')
|
|
|
|
self.tutWalkTrack.loop()
|
|
|
|
|
|
|
|
def exitWalk(self):
|
|
|
|
self.disableBattleDetect()
|
|
|
|
self.tutWalkTrack.pause()
|
|
|
|
self.tutWalkTrack = None
|
|
|
|
return
|