from direct.directnotify import DirectNotifyGlobal
from direct.distributed import DistributedObjectAI
import CogdoBarrelRoomConsts
import random

class DistributedCogdoBarrelAI(DistributedObjectAI.DistributedObjectAI):
    notify = DirectNotifyGlobal.directNotify.newCategory("DistributedCogdoBarrelAI")

    def __init__(self, air, index):
        DistributedObjectAI.DistributedObjectAI.__init__(self, air)
        self.index = index
        self.state = CogdoBarrelRoomConsts.StateAvailable
        self.brLaff = 0

    def requestGrab(self):
        toonup = CogdoBarrelRoomConsts.ToonUp
        if self.state == CogdoBarrelRoomConsts.StateAvailable:
            self.state = CogdoBarrelRoomConsts.StateUsed
            self.sendUpdate("setState", [CogdoBarrelRoomConsts.StateUsed])
            self.sendUpdate("setGrab", [self.air.getAvatarIdFromSender()])
            self.brLaff = random.randint(toonup[0], toonup[1])
            self.recieveToonUp()

    def getIndex(self):
        return self.index

    def getState(self):
        return self.state

    def recieveToonUp(self):
        avId = self.air.getAvatarIdFromSender()
        av = self.air.doId2do.get(avId)
        if not av:
            return
        av.toonUp(self.brLaff)