from direct.distributed.ClockDelta import * from direct.distributed.DistributedObjectAI import DistributedObjectAI from direct.task.Task import Task import time from otp.ai.MagicWordGlobal import * from toontown.building.DistributedBankCollectableAI import DistributedBankCollectableAI class DistributedBankInteriorAI(DistributedObjectAI): def __init__(self, block, air, zoneId): DistributedObjectAI.__init__(self, air) self.block = block self.zoneId = zoneId self.bankCollectable = None def announceGenerate(self): DistributedObjectAI.announceGenerate(self) self.sendUpdate('setState', ['vaultClosed', 0]) delay = 3600 - (int(time.time()) % 3600) # Time until the next hour. taskMgr.doMethodLater(delay, self.createBankCollectable, 'createBankCollectable') def getZoneIdAndBlock(self): return [self.zoneId, self.block] def __handleDeleteBankCollectable(self, task): if self.bankCollectable is not None: self.bankCollectable.requestDelete() self.bankCollectable = None self.sendUpdate('setState', ['vaultClosing', globalClockDelta.getRealNetworkTime()]) taskMgr.doMethodLater(5, self.closedTask, self.uniqueName('closedTask')) return Task.done def createBankCollectable(self, task=None): self.bankCollectable = DistributedBankCollectableAI(self.air) self.bankCollectable.generateWithRequired(self.zoneId) self.sendUpdate('setState', ['vaultOpening', globalClockDelta.getRealNetworkTime()]) taskMgr.doMethodLater(5, self.openedTask, self.uniqueName('openedTask')) taskMgr.doMethodLater(3600, self.createBankCollectable, 'createBankCollectable') taskMgr.doMethodLater(60, self.__handleDeleteBankCollectable, 'deleteBankCollectable') if task is not None: return Task.done def closedTask(self, task): self.sendUpdate('setState', ['vaultClosed', 0]) return Task.done def openedTask(self, task): self.sendUpdate('setState', ['vaultOpen', 0]) return Task.done