Poodletooth-iLand/toontown/coghq/ActiveCellAI.py

56 lines
1.7 KiB
Python
Raw Normal View History

2015-03-03 22:10:12 +00:00
from otp.level import DistributedEntityAI
from direct.directnotify import DirectNotifyGlobal
class ActiveCellAI(DistributedEntityAI.DistributedEntityAI):
notify = DirectNotifyGlobal.directNotify.newCategory('ActiveCellAI')
def __init__(self, level, entId):
self.state = 0
self.grid = None
self.occupantIds = []
DistributedEntityAI.DistributedEntityAI.__init__(self, level, entId)
def setGrid(gridId = self.gridId, self = self):
self.grid = self.level.entities.get(gridId, None)
if self.grid:
self.grid.addActiveCell(self)
return 1
return 0
if not setGrid():
self.accept(self.level.getEntityCreateEvent(self.gridId), setGrid)
return
def generate(self):
DistributedEntityAI.DistributedEntityAI.generate(self)
def delete(self):
self.notify.debug('delete')
self.ignoreAll()
DistributedEntityAI.DistributedEntityAI.delete(self)
def getState(self):
return self.state
def b_setState(self, state, objId = None):
self.setState(state, objId)
self.d_setState(state, objId)
def d_setState(self, state, objId = None):
if not objId:
objId = 0
self.sendUpdate('setState', [state, objId])
def setState(self, state, objId = None):
self.state = state
if state:
self.occupantIds.append(objId)
else:
try:
self.occupantIds.remove(objId)
except:
self.notify.warning("couldn't remove %s from active cell" % objId)
def getRowCol(self):
return [self.row, self.col]