Mercurial > sypikslang
changeset 90:0823e2529c23
Add robustness around the savefile stuff
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 09 May 2012 20:30:25 +0200 |
parents | 5dd66c1d8f26 |
children | c57b5b46d3e0 |
files | gamelib/gamegui.py gamelib/mainmenu.py |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/gamegui.py Wed May 09 20:21:39 2012 +0200 +++ b/gamelib/gamegui.py Wed May 09 20:30:25 2012 +0200 @@ -511,8 +511,10 @@ self.activity.update_widgets() game_data = self.game.save_data() if self.autosave: + # Don't corrupt the savefile if json crashes + data = json.dumps(game_data) savefile = open(self.autosave, 'w') - json.dump(game_data, savefile) + savefile.write(data) savefile.close() AddWindow.post(results)
--- a/gamelib/mainmenu.py Wed May 09 20:21:39 2012 +0200 +++ b/gamelib/mainmenu.py Wed May 09 20:30:25 2012 +0200 @@ -92,10 +92,15 @@ def load_game(self, savefile): if os.access(savefile, os.R_OK): f = open(savefile, 'r') - game_data = json.load(f) + try: + game_data = json.load(f) + except json.JSONDecodeError: + print 'Unable to load the autosave file - skipping' + game_data = None f.close() self.game_window = LabWindow(self.screen, game_data) - self.add_resume() + if game_data: + self.add_resume() # We stay at the main menu, so the user can can to continue or not def add_resume(self):