from panda3d.core import *
from direct.interval.IntervalGlobal import *
from toontown.toonbase.ToontownGlobals import *
from direct.directnotify import DirectNotifyGlobal
import DistributedBarrelBase

class DistributedGagBarrel(DistributedBarrelBase.DistributedBarrelBase):

    def __init__(self, cr):
        self.gagLevelMax = 0
        DistributedBarrelBase.DistributedBarrelBase.__init__(self, cr)
        self.numGags = 0
        self.gagScale = 13.0

    def disable(self):
        DistributedBarrelBase.DistributedBarrelBase.disable(self)
        self.ignoreAll()

    def delete(self):
        if hasattr(self, 'gagModel') and self.gagModel:
            self.gagModel.removeNode()
            del self.gagModel
        DistributedBarrelBase.DistributedBarrelBase.delete(self)

    def applyLabel(self):
        invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
        self.invModels = []
        from toontown.toonbase import ToontownBattleGlobals
        for gagTrack in xrange(len(ToontownBattleGlobals.AvPropsNew)):
            itemList = []
            for item in xrange(len(ToontownBattleGlobals.AvPropsNew[gagTrack])):
                itemList.append(invModel.find('**/' + ToontownBattleGlobals.AvPropsNew[gagTrack][item]))

            self.invModels.append(itemList)

        invModel.removeNode()
        del invModel
        try:
            gagTrack = self.getGagTrack()
            gagLevel = self.getGagLevel()
            self.notify.debug('gagTrack = %s, gagLevel = %s' % (gagTrack, gagLevel))
            self.gagModel = self.invModels[gagTrack][gagLevel]
            self.gagModel.reparentTo(self.gagNode)
            self.gagModel.setScale(self.gagScale)
            self.gagModel.setPos(0, -0.1, 0)
        except AttributeError:
            self.notify.warning("Gag barrel is missing an attribute, can't apply label.")

    def setNumGags(self, num):
        self.numGags = num
        if hasattr(self, 'gagModel') and self.gagModel:
            if self.numGags == 0:
                self.gagModel.setColorScale(0.5, 0.5, 0.5, 1)
            else:
                self.gagModel.clearColorScale()

    def setGrab(self, avId):
        DistributedBarrelBase.DistributedBarrelBase.setGrab(self, avId)

    def resetBarrel(self):
        DistributedBarrelBase.DistributedBarrelBase.resetBarrel(self)
        if hasattr(self, 'gagModel') and self.gagModel:
            self.gagModel.setScale(self.gagScale)
