mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-26 13:12:30 -06:00
67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
|
from otp.ai.AIBaseGlobal import *
|
||
|
from pandac.PandaModules import *
|
||
|
from DistributedNPCToonBaseAI import *
|
||
|
import NPCToons
|
||
|
from direct.task.Task import Task
|
||
|
|
||
|
class DistributedNPCBlockerAI(DistributedNPCToonBaseAI):
|
||
|
|
||
|
def __init__(self, air, npcId):
|
||
|
DistributedNPCToonBaseAI.__init__(self, air, npcId)
|
||
|
self.tutorial = 0
|
||
|
|
||
|
def delete(self):
|
||
|
taskMgr.remove(self.uniqueName('clearMovie'))
|
||
|
self.ignoreAll()
|
||
|
DistributedNPCToonBaseAI.delete(self)
|
||
|
|
||
|
def setTutorial(self, val):
|
||
|
self.tutorial = val
|
||
|
|
||
|
def getTutorial(self):
|
||
|
return self.tutorial
|
||
|
|
||
|
def avatarEnter(self):
|
||
|
avId = self.air.getAvatarIdFromSender()
|
||
|
DistributedNPCToonBaseAI.avatarEnter(self)
|
||
|
av = self.air.doId2do.get(avId)
|
||
|
if av is None:
|
||
|
self.notify.warning('toon isnt there! toon: %s' % avId)
|
||
|
return
|
||
|
self.acceptOnce(self.air.getAvatarExitEvent(avId), self.__handleUnexpectedExit, extraArgs=[avId])
|
||
|
self.sendStartMovie(avId)
|
||
|
return
|
||
|
|
||
|
def sendStartMovie(self, avId):
|
||
|
self.busy = avId
|
||
|
self.sendUpdate('setMovie', [NPCToons.BLOCKER_MOVIE_START,
|
||
|
self.npcId,
|
||
|
avId,
|
||
|
ClockDelta.globalClockDelta.getRealNetworkTime()])
|
||
|
if not self.tutorial:
|
||
|
taskMgr.doMethodLater(NPCToons.CLERK_COUNTDOWN_TIME, self.sendTimeoutMovie, self.uniqueName('clearMovie'))
|
||
|
|
||
|
def sendTimeoutMovie(self, task):
|
||
|
self.timedOut = 1
|
||
|
self.sendUpdate('setMovie', [NPCToons.BLOCKER_MOVIE_TIMEOUT,
|
||
|
self.npcId,
|
||
|
self.busy,
|
||
|
ClockDelta.globalClockDelta.getRealNetworkTime()])
|
||
|
self.sendClearMovie(None)
|
||
|
return Task.done
|
||
|
|
||
|
def sendClearMovie(self, task):
|
||
|
self.busy = 0
|
||
|
self.timedOut = 0
|
||
|
self.sendUpdate('setMovie', [NPCToons.BLOCKER_MOVIE_CLEAR,
|
||
|
self.npcId,
|
||
|
0,
|
||
|
ClockDelta.globalClockDelta.getRealNetworkTime()])
|
||
|
return Task.done
|
||
|
|
||
|
def __handleUnexpectedExit(self, avId):
|
||
|
self.notify.warning('avatar:' + str(avId) + ' has exited unexpectedly')
|
||
|
if not self.tutorial:
|
||
|
self.sendTimeoutMovie(None)
|
||
|
return
|