Mercurial > rinkhals
changeset 466:3d173ea43ad5
Add version number to saved games.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Tue, 24 Nov 2009 20:53:54 +0000 |
parents | 263dea6d226b |
children | fdda0f3c956b |
files | gamelib/toolbar.py gamelib/version.py |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/toolbar.py Tue Nov 24 09:53:00 2009 +0000 +++ b/gamelib/toolbar.py Tue Nov 24 20:53:54 2009 +0000 @@ -8,6 +8,7 @@ import equipment import cursors import engine +import version class OpaqueLabel(gui.Label): def __init__(self, value, **params): @@ -168,7 +169,8 @@ if dialog.value is None: return data = self.gameboard.save_game() - xml = xmlrpclib.dumps((data,), "foxassault") + params = (version.SAVE_GAME_VERSION, data) + xml = xmlrpclib.dumps(params, "foxassault") try: open(dialog.value, "wb").write(xml) except Exception, e: @@ -188,8 +190,12 @@ xml = open(dialog.value, "rb").read() params, methodname = xmlrpclib.loads(xml) if methodname != "foxassault": - raise ValueError("Bad XML save game.") - data = params[0] + raise ValueError("File does not appear to be a " + "Fox Assault save game.") + save_version = params[0] + if save_version != version.SAVE_GAME_VERSION: + raise ValueError("Incompatible save game version.") + data = params[1] except Exception, e: "Failed to load game: %s" % (e,) return
--- a/gamelib/version.py Tue Nov 24 09:53:00 2009 +0000 +++ b/gamelib/version.py Tue Nov 24 20:53:54 2009 +0000 @@ -8,6 +8,9 @@ 'rc': BASE_VERSION_STR + 'rc' + str(VERSION[4]), }[VERSION[3]] +# incremement whenever a change breaks the save game file format +SAVE_GAME_VERSION = 1 + NAME = 'Operation Fox Assault' DESCRIPTION = 'Turn-based strategy game written using Pygame.'