Poodletooth-iLand/toontown/parties/DistributedPartyDanceActivityBaseAI.py

47 lines
2 KiB
Python

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