Mercurial > rinkhals
comparison gamelib/savegame.py @ 571:2921169e545b
Don't rely on connect listener call order (PGU stores listeners in a dict).
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 28 Nov 2009 20:21:27 +0000 |
parents | a8dde729000a |
children | 95c71a13468c |
comparison
equal
deleted
inserted
replaced
570:be47830a56b1 | 571:2921169e545b |
---|---|
215 return gui.Dialog.event(self, e) | 215 return gui.Dialog.event(self, e) |
216 | 216 |
217 class SaveDialog(BaseSaveRestoreDialog): | 217 class SaveDialog(BaseSaveRestoreDialog): |
218 """Save game dialog.""" | 218 """Save game dialog.""" |
219 | 219 |
220 def __init__(self, gameboard): | 220 def __init__(self, gameboard, saved_func=None): |
221 BaseSaveRestoreDialog.__init__(self, "Save Game ...", "Save", allow_new=True) | 221 BaseSaveRestoreDialog.__init__(self, "Save Game ...", "Save", allow_new=True) |
222 if saved_func is None: | |
223 self._saved_func = lambda _val: None | |
224 else: | |
225 self._saved_func = saved_func | |
222 self.connect(gui.CHANGE, self._save, gameboard) | 226 self.connect(gui.CHANGE, self._save, gameboard) |
223 | 227 |
224 def _save(self, gameboard): | 228 def _save(self, gameboard): |
225 filename = self.get_fullpath() | 229 filename = self.get_fullpath() |
226 if filename is None: | 230 if filename is None: |
231 self._saved_func(False) | |
227 return | 232 return |
228 | 233 |
229 data = gameboard.save_game() | 234 data = gameboard.save_game() |
230 snapshot = gameboard.snapshot() | 235 snapshot = gameboard.snapshot() |
231 level_name = gameboard.level.level_name | 236 level_name = gameboard.level.level_name |
232 timestamp = datetime.datetime.now() | 237 timestamp = datetime.datetime.now() |
233 | 238 |
234 try: | 239 try: |
235 write_savegame(filename, data, snapshot, level_name, timestamp) | 240 write_savegame(filename, data, snapshot, level_name, timestamp) |
236 except Exception, e: | 241 except Exception, e: |
242 self._saved_func(False) | |
237 print "Failed to save game: %s" % (e,) | 243 print "Failed to save game: %s" % (e,) |
238 self.value = None | 244 return |
239 | 245 |
246 self._saved_func(True) | |
240 | 247 |
241 class RestoreDialog(BaseSaveRestoreDialog): | 248 class RestoreDialog(BaseSaveRestoreDialog): |
242 """Restore game dialog.""" | 249 """Restore game dialog.""" |
243 | 250 |
244 def __init__(self, restore_func): | 251 def __init__(self, restore_func): |