Mercurial > boomslang
diff pyntnclick/gamescreen.py @ 792:bdaffaa8b6bf pyntnclick
Loading and saving! (Plus a bunch of other stuff to make it possible.)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 27 Jan 2013 12:43:28 +0200 |
parents | 43b49f1de828 |
children | bcc9277a23e6 |
line wrap: on
line diff
--- a/pyntnclick/gamescreen.py Sat Jan 26 20:29:58 2013 +0200 +++ b/pyntnclick/gamescreen.py Sun Jan 27 12:43:28 2013 +0200 @@ -123,7 +123,8 @@ @property def slot_items(self): - return self.game.inventory()[self.inv_offset:][:len(self.slots)] + item_names = self.game.inventory()[self.inv_offset:][:len(self.slots)] + return [self.game.items[name] for name in item_names] def mouse_down(self, event, widget): if event.button != 1: @@ -257,11 +258,24 @@ getattr(self, 'game_event_%s' % event_name, lambda d: None)(data) def game_event_restart(self, data): - self.reset_game(self.create_initial_state()) + self.reset_game() + + def get_save_dir(self): + return self.gd.get_default_save_location() + + def game_event_load(self, data): + state = self.gd.game_state_class().load_game( + self.get_save_dir(), 'savegame') + # TODO: Handle this better. + if state is not None: + self.reset_game(state) + + def game_event_save(self, data): + self.game.data.save_game(self.get_save_dir(), 'savegame') def reset_game(self, game_state=None): self._clear_all() - self.game = self.create_initial_state() + self.game = self.create_initial_state(game_state) self.screen_modal = self.container.add( ModalStackContainer(self.container.rect.copy(), self.gd)) @@ -294,9 +308,8 @@ for scene_widget in reversed(self.scene_modal.children[:]): self.scene_modal.remove(scene_widget) scene_widget.scene.leave() - scene = self.game.scenes[scene_name] - self.game.current_scene = scene - self._add_scene(scene) + self.game.data.set_current_scene(scene_name) + self._add_scene(self.game.scenes[scene_name]) def show_detail(self, detail_name): self._add_scene(self.game.detail_views[detail_name], True)