from panda3d.core import NodePath from direct.directnotify import DirectNotifyGlobal from toontown.toonbase import ToontownGlobals from toontown.estate import DistributedStatuary from toontown.estate import GardenGlobals class DistributedChangingStatuary(DistributedStatuary.DistributedStatuary): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedChangingStatuary') def __init__(self, cr): self.notify.debug('constructing DistributedChangingStatuary') DistributedStatuary.DistributedStatuary.__init__(self, cr) def loadModel(self): self.rotateNode = self.plantPath.attachNewNode('rotate') self.model = loader.loadModel(self.modelPath) colNode = self.model.find('**/+CollisionNode') if not colNode.isEmpty(): score, multiplier = ToontownGlobals.PinballScoring[ToontownGlobals.PinballStatuary] if self.pinballScore: score = self.pinballScore[0] multiplier = self.pinballScore[1] scoreNodePath = NodePath('statuary-%d-%d' % (score, multiplier)) colNode.setName('statuaryCol') scoreNodePath.reparentTo(colNode.getParent()) colNode.reparentTo(scoreNodePath) self.model.setScale(self.worldScale) self.model.reparentTo(self.rotateNode) self.hideParts() self.stick2Ground() def hideParts(self): stage = -1 attrib = GardenGlobals.PlantAttributes[self.typeIndex] growthThresholds = attrib['growthThresholds'] for index, threshold in enumerate(growthThresholds): if self.growthLevel < threshold: stage = index break if stage == -1: stage = len(growthThresholds) self.notify.debug('growth Stage=%d' % stage) for index in range(len(growthThresholds) + 1): if index != stage: partName = '**/growthStage_%d' % index self.notify.debug('trying to remove %s' % partName) hideThis = self.model.find(partName) if not hideThis.isEmpty(): hideThis.removeNode() def setupShadow(self): DistributedStatuary.DistributedStatuary.setupShadow(self) self.hideShadow() def setGrowthLevel(self, growthLevel): self.growthLevel = growthLevel if self.model: self.model.removeNode() self.loadModel()