From d9741e886d1d5ac993c0fc7554fe93ef183127f5 Mon Sep 17 00:00:00 2001 From: Darren Ranalli Date: Tue, 14 Oct 2003 22:02:07 +0000 Subject: [PATCH] prelim per-user entId ranges --- direct/src/level/EditMgrAI.py | 62 +++++++++++++++++++++++++-------- direct/src/level/EditMgrBase.py | 24 ++++++------- 2 files changed, 59 insertions(+), 27 deletions(-) diff --git a/direct/src/level/EditMgrAI.py b/direct/src/level/EditMgrAI.py index 53ff54573a..b5cac959d1 100755 --- a/direct/src/level/EditMgrAI.py +++ b/direct/src/level/EditMgrAI.py @@ -1,21 +1,55 @@ """EditMgrAI module: contains the EditMgrAI class""" import EditMgrBase -from PythonUtil import list2dict +from PythonUtil import list2dict, uniqueElements + +if __debug__: + EntIdRange = 5000 + username2entIdBase = { + 'darren': 1*EntIdRange, + 'samir': 2*EntIdRange, + 'skyler': 3*EntIdRange, + 'joe': 4*EntIdRange, + 'mark': 5*EntIdRange, + } + assert uniqueElements(username2entIdBase.values()) + + UndefinedUsername = 'UNDEFINED_USERNAME' + UsernameConfigVar = 'factory-edit-username' + username = config.GetString(UsernameConfigVar, UndefinedUsername) class EditMgrAI(EditMgrBase.EditMgrBase): """This class handles AI-side editor-specific functionality""" - def setRequestNewEntity(self, data): - # pick an unused entId - spec = self.level.levelSpec - entIds = spec.getAllEntIds() - entIdDict = list2dict(entIds) - # dumb linear search for now - id = 100 - while id in entIdDict: - id += 1 + if __debug__: + def setRequestNewEntity(self, data): + # pick an unused entId + spec = self.level.levelSpec + entIds = spec.getAllEntIds() + entIdDict = list2dict(entIds) - # OK, we've chosen an unused entId. Add the entId to the data - # dict and do the insert - data.update({'entId': id}) - self.level.setAttribChange(self.entId, 'insertEntity', data) + # Feel free to add your name to the table if it's not in there yet + if username == UndefinedUsername: + self.setRequestSave(None) + self.notify.error("you must config '%s'" % UsernameConfigVar) + if username not in username2entIdBase: + self.notify.error("unknown editor username '%s'" % username) + + # dumb linear search for now + # make this smarter (cache last-allocated id) + baseId = username2entIdBase[username] + id = baseId + for id in xrange(baseId, baseId + EntIdRange): + if not id in entIdDict: + break + else: + self.notify.error('out of entIds') + + # OK, we've chosen an unused entId. Add the entId to the data + # dict and do the insert + data.update({'entId': id}) + self.level.setAttribChange(self.entId, 'insertEntity', data) + + def getSpecSaveEvent(self): + return 'requestSave-%s' % self.level.levelId + def setRequestSave(self, data): + messenger.send(self.getSpecSaveEvent()) diff --git a/direct/src/level/EditMgrBase.py b/direct/src/level/EditMgrBase.py index cabdfb5069..f5c74c5009 100755 --- a/direct/src/level/EditMgrBase.py +++ b/direct/src/level/EditMgrBase.py @@ -1,9 +1,11 @@ """EditMgrBase module: contains the EditMgrBase class""" import Entity +import DirectNotifyGlobal class EditMgrBase(Entity.Entity): """This class contains EditMgr code shared between AI and client""" + notify = DirectNotifyGlobal.directNotify.newCategory("EditMgr") def __init__(self, level, entId): Entity.Entity.__init__(self, level, entId) @@ -11,17 +13,13 @@ class EditMgrBase(Entity.Entity): Entity.Entity.destroy(self) self.ignoreAll() - def setInsertEntity(self, data): - self.level.levelSpec.insertEntity(data['entId'], - data['entType'], - data['parentEntId'], - ) + if __debug__: + def setInsertEntity(self, data): + self.level.levelSpec.insertEntity(data['entId'], + data['entType'], + data['parentEntId'], + ) - def setRemoveEntity(self, data): - self.level.levelSpec.removeEntity(data['entId'], - ) - - def getSpecSaveEvent(self): - return 'requestSave-%s' % self.level.levelId - def setRequestSave(self, data): - messenger.send(self.getSpecSaveEvent()) + def setRemoveEntity(self, data): + self.level.levelSpec.removeEntity(data['entId'], + )