Poodletooth-iLand/toontown/estate/DistributedChangingStatuary.py

61 lines
2.4 KiB
Python
Raw Normal View History

2015-03-03 22:10:12 +00:00
from pandac.PandaModules 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 xrange(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()