from direct.directnotify import DirectNotifyGlobal from toontown.parties.DistributedPartyActivityAI import DistributedPartyActivityAI from direct.distributed.ClockDelta import * import PartyGlobals class DistributedPartyDanceActivityBaseAI(DistributedPartyActivityAI): notify = DirectNotifyGlobal.directNotify.newCategory("DistributedPartyDanceActivityBaseAI") def __init__(self, air, parent, activityTuple): DistributedPartyActivityAI.__init__(self, air, parent, activityTuple) self.toons = [] self.headings = [] def generate(self): DistributedPartyActivityAI.generate(self) self.sendUpdate('setState', ['Active', globalClockDelta.getRealNetworkTime()]) def updateDancingToon(self, state, anim): avId = self.air.getAvatarIdFromSender() if not avId in self.toons: self.air.writeServerEvent('suspicious',avId,'Toon tried to update their state while not dancing!') return self.sendUpdate('setDancingToonState', [avId, state, anim]) def toonJoinRequest(self): avId = self.air.getAvatarIdFromSender() if avId in self.toons: self.air.writeServerEvent('suspicious',avId,'Toon tried to enter dance activity twice!') return av = self.air.doId2do.get(avId) if not av: self.air.writeServerEvent('suspicious',avId,'Toon tried to interact with a party activity from a different district!') return self.toons.append(avId) self.headings.append(av.getH()) self.sendUpdate('setToonsPlaying', [self.toons, self.headings]) def toonExitRequest(self): avId = self.air.getAvatarIdFromSender() if not avId in self.toons: self.air.writeServerEvent('suspicious',avId,'Toon tried to exit a dance floor they\'re not on!') return index = self.toons.index(avId) self.toons.remove(avId) self.headings.pop(index) self.sendUpdate('setToonsPlaying', [self.toons, self.headings])