+class SaveGameSlot(object):
+ def __init__(self, slot_num):
+ self.slot_num = slot_num
+
+ def save_path(self):
+ return save_path('slot_%s.json' % (self.slot_num,))
+
+ def get_game_data(self):
+ try:
+ with open(self.save_path(), 'r') as save_file:
+ return json.load(save_file)
+ except IOError:
+ return None
+ except Exception as e:
+ print "Error reading savegame in slot %s: %s" % (self.slot_num, e)
+ return None
+
+ def save(self, state):
+ ensure_save_path_exists()
+ save_data = {
+ 'timestamp': datetime.now().ctime(),
+ 'data': state.gameboard.export(),
+ }
+ with open(self.save_path(), 'w') as save_file:
+ json.dump(save_data, save_file)
+
+ def load(self):
+ game_data = self.get_game_data()
+ if game_data is None:
+ return
+ return GameState.load(game_data['data'])
+
+