mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 03:35:12 -06:00
115 lines
3.7 KiB
Python
115 lines
3.7 KiB
Python
from panda3d.core import *
|
|
from direct.distributed import DistributedObject
|
|
from direct.distributed.ClockDelta import *
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from direct.gui.DirectGui import *
|
|
from toontown.toonbase.ToonBaseGlobal import *
|
|
import HouseGlobals
|
|
|
|
class DistributedGarden(DistributedObject.DistributedObject):
|
|
notify = directNotify.newCategory('DistributedGarden')
|
|
|
|
def __init__(self, cr):
|
|
self.notify.debug('init')
|
|
DistributedObject.DistributedObject.__init__(self, cr)
|
|
self.props = []
|
|
self.pos = None
|
|
self.radius = 0
|
|
self.gridCells = 20
|
|
self.propTable = [None] * self.gridCells
|
|
for i in xrange(len(self.propTable)):
|
|
self.propTable[i] = [None] * self.gridCells
|
|
|
|
self.dx = 1.0 / self.gridCells
|
|
self.occupied = []
|
|
|
|
def generate(self):
|
|
DistributedObject.DistributedObject.generate(self)
|
|
|
|
def announceGenerate(self):
|
|
DistributedObject.DistributedObject.announceGenerate(self)
|
|
|
|
def disable(self):
|
|
DistributedObject.DistributedObject.disable(self)
|
|
|
|
def unload(self):
|
|
pass
|
|
|
|
def delete(self):
|
|
for prop in self.props:
|
|
prop[0].removeNode()
|
|
del prop[0]
|
|
del prop
|
|
|
|
del self.props
|
|
self.props = None
|
|
self.unload()
|
|
return
|
|
|
|
def sendNewProp(self, prop, x, y, z):
|
|
self.notify.debug('sendNewProp')
|
|
print 'new prop (%d) = %s,%s,%s' % (prop,
|
|
x,
|
|
y,
|
|
z)
|
|
if prop == HouseGlobals.PROP_ICECUBE:
|
|
model = loader.loadModel('phase_8/models/props/icecube.bam')
|
|
elif prop == HouseGlobals.PROP_FLOWER:
|
|
model = loader.loadModel('phase_8/models/props/flower_treasure.bam')
|
|
elif prop == HouseGlobals.PROP_SNOWFLAKE:
|
|
model = loader.loadModel('phase_8/models/props/snowflake_treasure.bam')
|
|
model.reparentTo(hidden)
|
|
model.setPos(x, y, z)
|
|
model.setScale(0.2)
|
|
model.setBillboardPointEye()
|
|
model.reparentTo(render)
|
|
self.props.append([model,
|
|
x,
|
|
y,
|
|
z])
|
|
|
|
def getPropPos(self, i, j):
|
|
pos = [self.pos[0] - self.radius + 2 * self.radius * i, self.pos[1] - self.radius + 2 * self.radius * j, self.pos[2]]
|
|
return pos
|
|
|
|
def loadProp(self, prop, i, j):
|
|
pos = self.getPropPos(i, j)
|
|
if prop == HouseGlobals.PROP_ICECUBE:
|
|
model = loader.loadModel('phase_8/models/props/icecube.bam')
|
|
elif prop == HouseGlobals.PROP_FLOWER:
|
|
model = loader.loadModel('phase_8/models/props/flower_treasure.bam')
|
|
elif prop == HouseGlobals.PROP_SNOWFLAKE:
|
|
model = loader.loadModel('phase_8/models/props/snowflake_treasure.bam')
|
|
else:
|
|
self.notify.error('cant find prop: %s' % prop)
|
|
model.reparentTo(hidden)
|
|
model.setPos(pos[0], pos[1], pos[2])
|
|
model.setScale(0.2)
|
|
model.setBillboardPointEye()
|
|
model.reparentTo(render)
|
|
|
|
def setAddProp(self, prop, i, j):
|
|
self.notify.debug('addProp')
|
|
self.props.append([prop, i, j])
|
|
self.loadProp(prop, i, j)
|
|
self.b_setProps(self, props)
|
|
|
|
def b_setProps(self, props):
|
|
self.notify.debug('b_setProps')
|
|
self.setProps(props)
|
|
self.d_setProps(props)
|
|
|
|
def d_setProps(self, props):
|
|
self.notify.debug('d_setProps')
|
|
aProps = []
|
|
for prop in props:
|
|
aProps = aProps + prop
|
|
|
|
self.sendUpdate('setProps', [aProps])
|
|
|
|
def setProps(self, props):
|
|
self.notify.debug('setProps')
|
|
self.props = props
|
|
for prop in self.props:
|
|
pInd, i, j = prop
|
|
self.propTable[i, j] = pInd
|