from panda3d.core import *
from direct.interval.IntervalGlobal import *
from toontown.toonbase.ToontownGlobals import *
from CrateGlobals import *
from otp.level import BasicEntities
from direct.directnotify import DirectNotifyGlobal

class DistributedGrid(BasicEntities.DistributedNodePathEntity):
    notify = DirectNotifyGlobal.directNotify.newCategory('DistributedGrid')

    def __init__(self, cr):
        BasicEntities.DistributedNodePathEntity.__init__(self, cr)
        self.model = None
        return

    def generateInit(self):
        self.notify.debug('generateInit')
        BasicEntities.DistributedNodePathEntity.generateInit(self)

    def generate(self):
        self.notify.debug('generate')
        BasicEntities.DistributedNodePathEntity.generate(self)

    def announceGenerate(self):
        self.notify.debug('announceGenerate')
        BasicEntities.DistributedNodePathEntity.announceGenerate(self)
        self.loadModel()

    def disable(self):
        self.notify.debug('disable')
        BasicEntities.DistributedNodePathEntity.disable(self)
        self.unloadModel()
        self.ignoreAll()

    def delete(self):
        BasicEntities.DistributedNodePathEntity.delete(self)

    def loadModel(self):
        self.notify.debug('loadModel')
        texSize = 6.0
        scale = self.cellSize / texSize
        self.model = loader.loadModel('phase_9/models/cogHQ/FloorWear.bam')
        self.model.reparentTo(self)
        long = self.numCol
        short = self.numRow
        h = 0
        if self.numCol < self.numRow:
            long = self.numRow
            short = self.numCol
            h = 90
        self.model.setScale(scale * long, scale * short, 1)
        self.model.setHpr(h, 180, 0)
        self.model.setPos(self.cellSize * self.numCol / 2.0, self.cellSize * self.numRow / 2.0, 0.025)
        self.model.setColor(0.588, 0.588, 0.459, 0.4)

    def unloadModel(self):
        if self.model:
            self.model.removeNode()
            del self.model

    def setNumRow(self, rows):
        self.numRow = rows
        self.unloadModel()
        self.loadModel()

    def setNumCol(self, cols):
        self.numCol = cols
        self.unloadModel()
        self.loadModel()
