Implement effect delay.

This commit is contained in:
John 2015-06-23 15:55:15 +03:00
parent 4ec772e549
commit 44920579d1
4 changed files with 27 additions and 6 deletions

View file

@ -2432,7 +2432,8 @@ dclass DistributedPolarPlaceEffectMgr : DistributedObject {
dclass DistributedEffectMgr : DistributedObject {
setHoliday(uint8) required broadcast;
addEffect() airecv clsend;
requestEffect() airecv clsend;
effectDone();
};
dclass DistributedResistanceEmoteMgr : DistributedObject {

View file

@ -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')

View file

@ -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)

View file

@ -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
}
}