from direct.directnotify import DirectNotifyGlobal from direct.distributed.ClockDelta import globalClockDelta from toontown.racing.DistributedKartPadAI import DistributedKartPadAI from toontown.racing.KartShopGlobals import KartGlobals class DistributedViewPadAI(DistributedKartPadAI): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedViewPadAI') def __init__(self, air): DistributedKartPadAI.__init__(self, air) self.lastEntered = globalClockDelta.getRealNetworkTime() def setLastEntered(self, lastEntered): self.lastEntered = lastEntered def d_setLastEntered(self, lastEntered): self.sendUpdate('setLastEntered', [lastEntered]) def b_setLastEntered(self, lastEntered): self.setLastEntered(lastEntered) self.d_setLastEntered(lastEntered) def getLastEntered(self): return self.lastEntered def addAvBlock(self, avId, startingBlock, paid): av = self.air.doId2do.get(avId) if not av.hasKart(): return KartGlobals.ERROR_CODE.eNoKart if not startingBlock.avId: self.b_setLastEntered(globalClockDelta.getRealNetworkTime()) taskMgr.doMethodLater(KartGlobals.COUNTDOWN_TIME, self.kickAvatar, startingBlock.uniqueName('viewTimer'), extraArgs=[avId, startingBlock]) return KartGlobals.ERROR_CODE.success else: return KartGlobals.ERROR_CODE.eOccupied def kickAvatar(self, avId, startingBlock): if avId == startingBlock.avId: if startingBlock.currentMovie: return else: startingBlock.normalExit() def removeAvBlock(self, avId, startingBlock): taskMgr.remove(startingBlock.uniqueName('viewTimer')) def kartMovieDone(self): pass def updateTimer(self): self.b_setLastEntered(globalClockDelta.getRealNetworkTime())