from direct.directnotify import DirectNotifyGlobal
from toontown.parties.DistributedPartyActivityAI import DistributedPartyActivityAI
from direct.distributed.ClockDelta import globalClockDelta
from direct.fsm.FSM import FSM
from toontown.effects import FireworkShows
import PartyGlobals
import random

class DistributedPartyFireworksActivityAI(DistributedPartyActivityAI, FSM):
    notify = DirectNotifyGlobal.directNotify.newCategory("DistributedPartyFireworksActivityAI")

    def __init__(self, air, parent, activityTuple):
        DistributedPartyActivityAI.__init__(self, air, parent, activityTuple)
        FSM.__init__(self, 'DistributedPartyActivityAI')
        self.state = 'Idle'

    def getEventId(self):
        return PartyGlobals.FireworkShows.Summer

    def getShowStyle(self):
        return random.randint(0, len(FireworkShows.shows[PartyGlobals.FireworkShows.Summer]) - 1)

    def getSongId(self):
        return random.randint(0, 1)

    def toonJoinRequest(self):
        avId = self.air.getAvatarIdFromSender()
        host = self.air.doId2do[self.parent].hostId
        if avId == host and self.state == 'Idle':
            self.request('Active')
            return
        self.sendUpdateToAvatarId(avId, 'joinRequestDenied', [1])

    def enterActive(self):
        self.sendUpdate('setState', ['Active', globalClockDelta.getRealNetworkTime()])

    def enterIdle(self):
        self.sendUpdate('setState', ['Idle', globalClockDelta.getRealNetworkTime()])
