Poodletooth-iLand/toontown/distributed/ToontownDistrictAI.py
2015-06-17 10:11:33 -04:00

53 lines
No EOL
2.1 KiB
Python
Executable file

from direct.directnotify.DirectNotifyGlobal import directNotify
from otp.distributed.DistributedDistrictAI import DistributedDistrictAI
import time
class ToontownDistrictAI(DistributedDistrictAI):
notify = directNotify.newCategory('ToontownDistrictAI')
created = 0
def announceGenerate(self):
DistributedDistrictAI.announceGenerate(self)
# Remember the time of which this district was created:
self.created = int(time.time())
# We want to handle shard status queries so that a ShardStatusReceiver
# being created after we're generated will know where we're at:
self.air.netMessenger.accept('queryShardStatus', self, self.handleShardStatusQuery)
# Send a shard status update with the information we have:
status = {
'available': bool(self.available),
'name': self.name,
'created': int(time.time())
}
self.air.netMessenger.send('shardStatus', [self.air.ourChannel, status])
# Add a post remove shard status update in-case we go down:
status = {'available': False}
datagram = self.air.netMessenger.prepare('shardStatus', [self.air.ourChannel, status])
self.air.addPostRemove(datagram)
def handleShardStatusQuery(self):
# Send a shard status update with the information we have:
status = {
'available': bool(self.available),
'name': self.name,
'created': int(time.time())
}
self.air.netMessenger.send('shardStatus', [self.air.ourChannel, status])
def setName(self, name):
DistributedDistrictAI.setName(self, name)
# Send a shard status update containing our name:
status = {'name': name}
self.air.netMessenger.send('shardStatus', [self.air.ourChannel, status])
def setAvailable(self, available):
DistributedDistrictAI.setAvailable(self, available)
# Send a shard status update containing our availability:
status = {'available': bool(available)}
self.air.netMessenger.send('shardStatus', [self.air.ourChannel, status])