Mercurial > rinkhals
diff gamelib/savegame.py @ 512:b112bcf4d435
Add restore game button to main menu.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Thu, 26 Nov 2009 23:36:20 +0000 |
parents | 3e4bb2c9556c |
children | 882b582da618 |
line wrap: on
line diff
--- a/gamelib/savegame.py Thu Nov 26 23:33:49 2009 +0000 +++ b/gamelib/savegame.py Thu Nov 26 23:36:20 2009 +0000 @@ -12,6 +12,8 @@ import config import version +import gameboard +import serializer TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%S" @@ -239,11 +241,11 @@ class RestoreDialog(BaseSaveRestoreDialog): """Restore game dialog.""" - def __init__(self, gameboard): + def __init__(self, restore_func): BaseSaveRestoreDialog.__init__(self, "Load Game ...", "Load", allow_new=False) - self.connect(gui.CHANGE, self._restore, gameboard) + self.connect(gui.CHANGE, self._restore, restore_func) - def _restore(self, gameboard): + def _restore(self, restore_func): filename = self.get_fullpath() if filename is None: return @@ -254,4 +256,14 @@ print "Failed to load game: %s" % (e,) return - gameboard.restore_game(data) + if 'refid' not in data or 'class' not in data or data['class'] != gameboard.GameBoard.__name__: + print "Failed to load game: Invalid game data." + return + + try: + new_gameboard = serializer.unsimplify(data) + except Exception, e: + print "Failed to load game: %s" % (e,) + return + + restore_func(new_gameboard)