from direct.showbase.PythonUtil import Functor import LevelMgrBase class LevelMgrAI(LevelMgrBase.LevelMgrBase): def __init__(self, level, entId): LevelMgrBase.LevelMgrBase.__init__(self, level, entId) self.level.zoneNum2zoneId = {} self.level.zoneIds = [] self.accept(self.level.getEntityOfTypeCreateEvent('zone'), self.handleZoneCreated) def destroy(self): del self.level.zoneIds del self.level.zoneNum2zoneId LevelMgrBase.LevelMgrBase.destroy(self) def handleZoneCreated(self, entId): zoneEnt = self.level.getEntity(entId) self.level.zoneNum2zoneId[zoneEnt.entId] = zoneEnt.getZoneId() self.privCreateSortedZoneIdList() self.accept(self.level.getEntityDestroyEvent(entId), Functor(self.handleZoneDestroy, entId)) def handleZoneDestroy(self, entId): zoneEnt = self.level.getEntity(entId) del self.level.zoneNum2zoneId[zoneEnt.entId] self.privCreateSortedZoneIdList() def privCreateSortedZoneIdList(self): zoneNums = self.level.zoneNum2zoneId.keys() zoneNums.sort() self.level.zoneIds = [] for zoneNum in zoneNums: self.level.zoneIds.append(self.level.zoneNum2zoneId[zoneNum])