From 44920579d14d32c19816b68a823e8a50ddd34d97 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 23 Jun 2015 15:55:15 +0300 Subject: [PATCH] Implement effect delay. --- dependencies/astron/dclass/stride.dc | 3 ++- toontown/ai/DistributedEffectMgr.py | 18 ++++++++++++++++-- toontown/ai/DistributedEffectMgrAI.py | 9 +++++++-- toontown/ai/HolidayGlobals.py | 3 ++- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/dependencies/astron/dclass/stride.dc b/dependencies/astron/dclass/stride.dc index 523a115b..042e26d4 100644 --- a/dependencies/astron/dclass/stride.dc +++ b/dependencies/astron/dclass/stride.dc @@ -2432,7 +2432,8 @@ dclass DistributedPolarPlaceEffectMgr : DistributedObject { dclass DistributedEffectMgr : DistributedObject { setHoliday(uint8) required broadcast; - addEffect() airecv clsend; + requestEffect() airecv clsend; + effectDone(); }; dclass DistributedResistanceEmoteMgr : DistributedObject { diff --git a/toontown/ai/DistributedEffectMgr.py b/toontown/ai/DistributedEffectMgr.py index 11755f38..97e07c96 100644 --- a/toontown/ai/DistributedEffectMgr.py +++ b/toontown/ai/DistributedEffectMgr.py @@ -1,9 +1,13 @@ from direct.distributed.DistributedObject import DistributedObject from otp.speedchat import SpeedChatGlobals -import HolidayGlobals +import HolidayGlobals, time class DistributedEffectMgr(DistributedObject): + def __init__(self, cr): + DistributedObject.__init__(self, cr) + self.nextTime = 0 + def delete(self): self.ignoreAll() DistributedObject.delete(self) @@ -16,10 +20,20 @@ class DistributedEffectMgr(DistributedObject): if not self.cr.newsManager.isHolidayRunning(self.holiday): return + currentTime = time.time() + + if self.nextTime > currentTime: + return + holidayInfo = HolidayGlobals.getHoliday(self.holiday) if 'speedchatIndexes' not in holidayInfo or phraseId not in holidayInfo['speedchatIndexes']: return - self.sendUpdate('addEffect') + if 'effectDelay' in holidayInfo: + self.nextTime = currentTime + holidayInfo['effectDelay'] + + self.sendUpdate('requestEffect') + + def effectDone(self): self.cr.newsManager.broadcastHoliday(holidayInfo, 'effectMessage') \ No newline at end of file diff --git a/toontown/ai/DistributedEffectMgrAI.py b/toontown/ai/DistributedEffectMgrAI.py index c2ff1c58..a5c3e213 100644 --- a/toontown/ai/DistributedEffectMgrAI.py +++ b/toontown/ai/DistributedEffectMgrAI.py @@ -11,11 +11,12 @@ class DistributedEffectMgrAI(DistributedObjectAI): def getHoliday(self): return self.holiday - def addEffect(self): + def requestEffect(self): if not self.air.newsManager.isHolidayRunning(self.holiday): return - av = self.air.doId2do.get(self.air.getAvatarIdFromSender()) + avId = self.air.getAvatarIdFromSender() + av = self.air.doId2do.get(avId) if not av: return @@ -23,4 +24,8 @@ class DistributedEffectMgrAI(DistributedObjectAI): holiday = HolidayGlobals.getHoliday(self.holiday) expireTime = int(HolidayGlobals.getUnixTime(HolidayGlobals.getEndDate(holiday)) / 60) + self.sendUpdateToAvatarId(avId, 'effectDone') + self.doEffect(expireTime) + + def doEffect(self, expireTime): av.b_setCheesyEffect(self.effectId, 0, expireTime) \ No newline at end of file diff --git a/toontown/ai/HolidayGlobals.py b/toontown/ai/HolidayGlobals.py index b27a380f..c111d886 100644 --- a/toontown/ai/HolidayGlobals.py +++ b/toontown/ai/HolidayGlobals.py @@ -54,7 +54,8 @@ Holidays = { 'ongoingMessage': TTLocalizer.IdesOfMarchStart, 'endMessage': TTLocalizer.IdesOfMarchEnd, 'speedchatIndexes': [30450], # It's easy to be green! - 'effectMessage': TTLocalizer.GreenToonEffectMsg + 'effectMessage': TTLocalizer.GreenToonEffectMsg, + 'effectDelay': 10 } }