2015-03-03 16:10:12 -06:00
|
|
|
from direct.distributed.DistributedObject import DistributedObject
|
|
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
|
|
from toontown.toonbase.AprilToonsGlobals import *
|
|
|
|
from toontown.toonbase import ToontownGlobals
|
|
|
|
|
|
|
|
class DistributedAprilToonsMgr(DistributedObject):
|
|
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('AprilToonsMgr')
|
|
|
|
|
|
|
|
def __init__(self, cr):
|
|
|
|
DistributedObject.__init__(self, cr)
|
|
|
|
cr.aprilToonsMgr = self
|
|
|
|
self.events = []
|
|
|
|
|
|
|
|
def announceGenerate(self):
|
|
|
|
DistributedObject.announceGenerate(self)
|
|
|
|
self.d_requestEventsList()
|
2015-04-28 23:01:52 -05:00
|
|
|
|
2015-03-03 16:10:12 -06:00
|
|
|
def d_requestEventsList(self):
|
|
|
|
self.notify.debug("Requesting events list from AI.")
|
|
|
|
self.sendUpdate('requestEventsList', [])
|
2015-04-28 23:01:52 -05:00
|
|
|
|
2015-03-03 16:10:12 -06:00
|
|
|
def requestEventsListResp(self, eventIds):
|
|
|
|
self.events = eventIds
|
|
|
|
self.checkActiveEvents()
|
|
|
|
|
|
|
|
def isEventActive(self, eventId):
|
|
|
|
# NOTE: Possible race condition where the client checks for if an event is active
|
|
|
|
# *before* it gets a response from the AI.
|
|
|
|
if not base.cr.config.GetBool('want-april-toons', False):
|
|
|
|
# If this DO is generated but we don't want april toons, always return
|
|
|
|
# false regardless.
|
|
|
|
return False
|
|
|
|
return eventId in self.events
|
|
|
|
|
|
|
|
def setEventActive(self, eventId, active):
|
|
|
|
if active and eventId not in self.events:
|
|
|
|
self.events.append(eventId)
|
|
|
|
elif not active and eventId in self.events:
|
|
|
|
del self.events[eventId]
|
|
|
|
|
|
|
|
def checkActiveEvents(self):
|
|
|
|
if self.isEventActive(EventGlobalGravity):
|
|
|
|
base.localAvatar.controlManager.currentControls.setGravity(ToontownGlobals.GravityValue * 0.75)
|