# HG changeset patch # User Stefano Rivera # Date 1378571920 -7200 # Node ID 80c452f348dc45c1c5f24c3e113207ab7d88c066 # Parent 45df0f5eac533dc32c658a3f7f611d5ea23d89ce Rearrange progress saving, to happen on room entrance diff -r 45df0f5eac53 -r 80c452f348dc nagslang/engine.py --- a/nagslang/engine.py Sat Sep 07 18:29:14 2013 +0200 +++ b/nagslang/engine.py Sat Sep 07 18:38:40 2013 +0200 @@ -25,7 +25,6 @@ self._screens[area_name] = AreaScreen starting_area = Level.game_starting_point()[0] - self._world.load() if options.point: x, y = options.point.split(',') point = (int(x), int(y)) diff -r 45df0f5eac53 -r 80c452f348dc nagslang/screens/area.py --- a/nagslang/screens/area.py Sat Sep 07 18:29:14 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 18:38:40 2013 +0200 @@ -85,12 +85,12 @@ self.keys = ControlKeys() self._level = Level(self.name, self.world) self._level.load(self.space) - self.game_starting_point = Level.game_starting_point() self._drawables = Drawables() self.add_walls() self._add_collision_handlers() self.add_protagonist() self.add_game_objects() + self.save_progress() sound.play_music("POL-cyber-factory-short.ogg") def teardown(self): @@ -158,8 +158,16 @@ def add_protagonist(self): self.protagonist = self.world.protagonist self.protagonist.change_space(self.space) + self.world.rooms += 1 self._drawables.add(self.protagonist) + def save_progress(self): + if self.name == Level.game_starting_point()[0]: + return + self.world.level = (self.name, (self.protagonist.physicser.position.x, + self.protagonist.physicser.position.y)) + self.world.save() + def handle_event(self, ev): if ev.type == pygame.locals.KEYDOWN: if ev.key == pygame.locals.K_ESCAPE: @@ -180,9 +188,6 @@ if ev.destination is not None and ev.destination != self.name: # Go to anther screen self._disable_render = True - self.world.rooms += 1 - self.world.level = (ev.destination, ev.dest_pos) - self.world.save() ScreenChange.post(ev.destination) return # else we're teleporting within the screen, and just the diff -r 45df0f5eac53 -r 80c452f348dc nagslang/world.py --- a/nagslang/world.py Sat Sep 07 18:29:14 2013 +0200 +++ b/nagslang/world.py Sat Sep 07 18:38:40 2013 +0200 @@ -15,6 +15,8 @@ class World(object): def __init__(self): + self.__dict__['protagonist'] = Protagonist( + pymunk.Space(), self, Level.game_starting_point()[1]) self.reset() def reset(self): @@ -28,8 +30,7 @@ 'level_state': {}, 'inventory': set(), } - self.__dict__['protagonist'] = Protagonist( - pymunk.Space(), self, self.level[1]) + self.save() def __getattr__(self, name): try: diff -r 45df0f5eac53 -r 80c452f348dc nagslang/yamlish.py --- a/nagslang/yamlish.py Sat Sep 07 18:29:14 2013 +0200 +++ b/nagslang/yamlish.py Sat Sep 07 18:38:40 2013 +0200 @@ -47,7 +47,7 @@ if isinstance(data, type_): f = getattr(self, '_dump_%s' % type_.__name__) return f(data) - raise NotImplementedError() + raise NotImplementedError('Type: %s' % type(data)) def _dump_list_block(self, data, indent): output = []