oldschool-toontown/otp/level/EntityCreatorBase.py
2019-12-30 01:00:16 -05:00

27 lines
1,008 B
Python

from direct.directnotify import DirectNotifyGlobal
class EntityCreatorBase:
notify = DirectNotifyGlobal.directNotify.newCategory('EntityCreator')
def __init__(self, level):
self.level = level
self.entType2Ctor = {}
def createEntity(self, entId):
entType = self.level.getEntityType(entId)
if entType not in self.entType2Ctor:
self.notify.error('unknown entity type: %s (ent%s)' % (entType, entId))
ent = self.doCreateEntity(self.entType2Ctor[entType], entId)
return ent
def getEntityTypes(self):
return list(self.entType2Ctor.keys())
def privRegisterType(self, entType, ctor):
if entType in self.entType2Ctor:
self.notify.debug('replacing %s ctor %s with %s' % (entType, self.entType2Ctor[entType], ctor))
self.entType2Ctor[entType] = ctor
def privRegisterTypes(self, type2ctor):
for entType, ctor in list(type2ctor.items()):
self.privRegisterType(entType, ctor)