mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-11-01 01:07:54 +00:00
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
|
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]
|