Poodletooth-iLand/toontown/ai/DistributedBlackCatMgr.py

54 lines
2.1 KiB
Python
Raw Normal View History

2015-03-03 22:10:12 +00:00
from direct.directnotify import DirectNotifyGlobal
from direct.distributed import DistributedObject
from direct.interval.IntervalGlobal import *
from toontown.effects import DustCloud
def getDustCloudIval(toon):
dustCloud = DustCloud.DustCloud(fBillboard=0)
dustCloud.setBillboardAxis(2.0)
dustCloud.setZ(3)
dustCloud.setScale(0.4)
dustCloud.createTrack()
if getattr(toon, 'laffMeter', None):
toon.laffMeter.color = toon.style.getBlackColor()
seq = Sequence(Wait(0.5), Func(dustCloud.reparentTo, toon), dustCloud.track, Func(dustCloud.destroy))
seq.append(Func(messenger.send, 'blackcat-transformed'))
if getattr(toon, 'laffMeter', None):
seq.append(Func(toon.laffMeter.adjustFace, toon.hp, toon.maxHp))
return seq
class DistributedBlackCatMgr(DistributedObject.DistributedObject):
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedBlackCatMgr')
def __init__(self, cr):
DistributedObject.DistributedObject.__init__(self, cr)
def announceGenerate(self):
DistributedObject.DistributedObject.announceGenerate(self)
DistributedBlackCatMgr.notify.debug('announceGenerate')
self.acceptOnce('DistributedBlackCatMgr-activate', self.d_requestBlackCatTransformation)
self.dustCloudIval = None
def delete(self):
if self.dustCloudIval:
self.dustCloudIval.finish()
del self.dustCloudIval
self.ignore('DistributedBlackCatMgr-activate')
DistributedObject.DistributedObject.delete(self)
def d_requestBlackCatTransformation(self):
self.sendUpdate('requestBlackCatTransformation', [])
def doBlackCatTransformation(self, avId):
DistributedBlackCatMgr.notify.debug('doBlackCatTransformation')
toon = self.cr.doId2do.get(avId)
if not toon:
DistributedBlackCatMgr.notify.warning("couldn't find Toon %s" % self.avId)
return
if toon.style.getAnimal() != 'cat':
DistributedBlackCatMgr.notify.warning('not a cat: %s' % self.avId)
return
self.dustCloudIval = getDustCloudIval(toon)
self.dustCloudIval.start()