from . import EditMgrBase
if __dev__:
    from direct.showbase.PythonUtil import list2dict
    from . import EditorGlobals

class EditMgrAI(EditMgrBase.EditMgrBase):
    if __dev__:

        def setRequestNewEntity(self, data):
            spec = self.level.levelSpec
            entIds = spec.getAllEntIds()
            entIdDict = list2dict(entIds)
            allocRange = EditorGlobals.getEntIdAllocRange()
            if not hasattr(self, 'lastAllocatedEntId'):
                self.lastAllocatedEntId = allocRange[0]
            idChosen = 0
            while not idChosen:
                for id in range(self.lastAllocatedEntId, allocRange[1]):
                    print(id)
                    if id not in entIdDict:
                        idChosen = 1
                        break
                else:
                    if self.lastAllocatedEntId != allocRange[0]:
                        self.lastAllocatedEntId = allocRange[0]
                    else:
                        self.notify.error('out of entIds')

            data.update({'entId': id})
            self.lastAllocatedEntId = id
            self.level.setAttribChange(self.entId, 'insertEntity', data)
            self.level.levelSpec.doSetAttrib(self.entId, 'requestNewEntity', None)
            return

        def getSpecSaveEvent(self):
            return 'requestSave-%s' % self.level.levelId

        def setRequestSave(self, data):
            messenger.send(self.getSpecSaveEvent())
            self.level.levelSpec.doSetAttrib(self.entId, 'requestSave', None)
            return