from panda3d.core import *
from direct.distributed import DistributedObjectAI
from toontown.toonbase import ToontownGlobals
from otp.otpbase import OTPGlobals
from direct.fsm import FSM

class DistCogdoCraneAI(DistributedObjectAI.DistributedObjectAI, FSM.FSM):

    def __init__(self, air, craneGame, index):
        DistributedObjectAI.DistributedObjectAI.__init__(self, air)
        FSM.FSM.__init__(self, 'DistCogdoCraneAI')
        self.craneGame = craneGame
        self.index = index
        self.avId = 0
        self.objectId = 0

    def getCraneGameId(self):
        return self.craneGame.doId

    def getIndex(self):
        return self.index

    def generate(self):
        DistributedObjectAI.DistributedObjectAI.generate(self)
        self.request('Free')

    def d_setState(self, state, avId):
        self.sendUpdate('setState', [state, avId])

    def enterOff(self):
        pass

    def exitOff(self):
        pass

    def enterControlled(self, avId):
        self.avId = avId
        self.d_setState('C', avId)

    def exitControlled(self):
        if self.objectId:
            obj = self.air.doId2do[self.objectId]
            obj.request('Dropped', self.avId, self.doId)

    def enterFree(self):
        self.avId = 0
        self.d_setState('F', 0)

    def exitFree(self):
        pass
