mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -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)
|
||||
# this is one of the required fields
|
||||
self.zoneId = zoneId
|
||||
self.modified = 0
|
||||
if __debug__:
|
||||
self.modified = 0
|
||||
self.makeBackup = 1
|
||||
|
||||
def generate(self, levelSpec):
|
||||
self.notify.debug('generate')
|
||||
@ -58,6 +60,12 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
||||
|
||||
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):
|
||||
"""Create the object that will be used to create Entities.
|
||||
Inheritors, override if desired."""
|
||||
@ -98,7 +106,8 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
||||
self.modified = 1
|
||||
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):
|
||||
if hasattr(self, 'saveTask'):
|
||||
@ -112,9 +121,18 @@ class DistributedLevelAI(DistributedObjectAI.DistributedObjectAI,
|
||||
DistributedLevelAI.notify.info('saving spec')
|
||||
if hasattr(self, 'saveTask'):
|
||||
del self.saveTask
|
||||
if self.modified:
|
||||
self.levelSpec.saveToDisk()
|
||||
self.modified = 0
|
||||
if not self.modified:
|
||||
DistributedLevelAI.notify.info('no changes to save')
|
||||
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):
|
||||
senderId = self.air.msgSender
|
||||
|
@ -20,3 +20,8 @@ class EditMgr(Entity.Entity):
|
||||
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())
|
||||
|
@ -34,6 +34,7 @@ class LevelMgr(Entity):
|
||||
class EditMgr(Entity):
|
||||
type = 'editMgr'
|
||||
attribs = (
|
||||
('requestSave', None),
|
||||
('insertEntity', None),
|
||||
('removeEntity', None),
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user