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 = 0 def announceGenerate(self): DistributedKartPadAI.announceGenerate(self) 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: return 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 removeAvBlock(self, avId, startingBlock): if avId == startingBlock.avId: taskMgr.remove(startingBlock.uniqueName('viewTimer')) def kickAvatar(self, avId, startingBlock): if avId == startingBlock.avId and not startingBlock.currentMovie: startingBlock.normalExit()