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() def d_requestEventsList(self): self.notify.debug("Requesting events list from AI.") self.sendUpdate('requestEventsList', []) 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)