mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
added requestSave, backups made every N minutes
This commit is contained in:
parent
1593885849
commit
98ecf0cd40
@ -18,7 +18,9 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
|||||||
Level.Level.__init__(self)
|
Level.Level.__init__(self)
|
||||||
# this is one of the required fields
|
# this is one of the required fields
|
||||||
self.zoneId = zoneId
|
self.zoneId = zoneId
|
||||||
self.modified = 0
|
if __debug__:
|
||||||
|
self.modified = 0
|
||||||
|
self.makeBackup = 1
|
||||||
|
|
||||||
def generate(self, levelSpec):
|
def generate(self, levelSpec):
|
||||||
self.notify.debug('generate')
|
self.notify.debug('generate')
|
||||||
@ -58,6 +60,12 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
|||||||
|
|
||||||
Level.Level.initializeLevel(self, self.doId, levelSpec, scenarioIndex)
|
Level.Level.initializeLevel(self, self.doId, levelSpec, scenarioIndex)
|
||||||
|
|
||||||
|
if __debug__:
|
||||||
|
# listen for requests to save the spec
|
||||||
|
editMgrEntId = self.entType2ids['editMgr'][0]
|
||||||
|
editMgr = self.getEntity(editMgrEntId)
|
||||||
|
self.accept(editMgr.getSpecSaveEvent(), self.saveSpec)
|
||||||
|
|
||||||
def createEntityCreator(self):
|
def createEntityCreator(self):
|
||||||
"""Create the object that will be used to create Entities.
|
"""Create the object that will be used to create Entities.
|
||||||
Inheritors, override if desired."""
|
Inheritors, override if desired."""
|
||||||
@ -98,7 +106,8 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
|||||||
self.modified = 1
|
self.modified = 1
|
||||||
self.scheduleSave()
|
self.scheduleSave()
|
||||||
|
|
||||||
SavePeriod = simbase.config.GetFloat('factory-save-period', 10)
|
SavePeriod = simbase.config.GetInt('factory-save-period', 10)
|
||||||
|
BackupPeriod = simbase.config.GetInt('factory-backup-period-minutes',5)
|
||||||
|
|
||||||
def scheduleSave(self):
|
def scheduleSave(self):
|
||||||
if hasattr(self, 'saveTask'):
|
if hasattr(self, 'saveTask'):
|
||||||
@ -112,9 +121,18 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
|||||||
DistributedLevelAI.notify.info('saving spec')
|
DistributedLevelAI.notify.info('saving spec')
|
||||||
if hasattr(self, 'saveTask'):
|
if hasattr(self, 'saveTask'):
|
||||||
del self.saveTask
|
del self.saveTask
|
||||||
if self.modified:
|
if not self.modified:
|
||||||
self.levelSpec.saveToDisk()
|
DistributedLevelAI.notify.info('no changes to save')
|
||||||
self.modified = 0
|
return
|
||||||
|
self.levelSpec.saveToDisk(createBackup=self.makeBackup)
|
||||||
|
self.modified = 0
|
||||||
|
self.makeBackup = 0
|
||||||
|
def setMakeBackup(task, self=self):
|
||||||
|
self.makeBackup = 1
|
||||||
|
self.backupTask = taskMgr.doMethodLater(
|
||||||
|
DistributedLevelAI.BackupPeriod * 60,
|
||||||
|
setMakeBackup,
|
||||||
|
self.uniqueName('setMakeBackup'))
|
||||||
|
|
||||||
def requestCurrentLevelSpec(self, specHash, entTypeRegHash):
|
def requestCurrentLevelSpec(self, specHash, entTypeRegHash):
|
||||||
senderId = self.air.msgSender
|
senderId = self.air.msgSender
|
||||||
|
@ -20,3 +20,8 @@ class EditMgr(Entity.Entity):
|
|||||||
def setRemoveEntity(self, data):
|
def setRemoveEntity(self, data):
|
||||||
self.level.levelSpec.removeEntity(data['entId'],
|
self.level.levelSpec.removeEntity(data['entId'],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def getSpecSaveEvent(self):
|
||||||
|
return 'requestSave-%s' % self.level.levelId
|
||||||
|
def setRequestSave(self, data):
|
||||||
|
messenger.send(self.getSpecSaveEvent())
|
||||||
|
@ -34,6 +34,7 @@ class LevelMgr(Entity):
|
|||||||
class EditMgr(Entity):
|
class EditMgr(Entity):
|
||||||
type = 'editMgr'
|
type = 'editMgr'
|
||||||
attribs = (
|
attribs = (
|
||||||
|
('requestSave', None),
|
||||||
('insertEntity', None),
|
('insertEntity', None),
|
||||||
('removeEntity', None),
|
('removeEntity', None),
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user