Mercurial > skaapsteker
changeset 104:12ce1d131a72
Hack in resume game option
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Mon, 04 Apr 2011 20:53:45 +0200 |
parents | aaef228b6358 |
children | c455b7925212 |
files | skaapsteker/levelscene.py skaapsteker/menuscene.py skaapsteker/physics.py |
diffstat | 3 files changed, 31 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/skaapsteker/levelscene.py Mon Apr 04 20:46:44 2011 +0200 +++ b/skaapsteker/levelscene.py Mon Apr 04 20:53:45 2011 +0200 @@ -28,6 +28,7 @@ self._level_surface = self._level.get_surface() self._pos = (0, 0) self._world = physics.World() + self.frozen = False # hackity, hack, hack for sprite in self._level.enemies: @@ -47,7 +48,18 @@ def _quit(self): import menuscene # avoid circular import - engine.ChangeScene.post(menuscene.MenuScene()) + self.freeze() + engine.ChangeScene.post(menuscene.MenuScene(self)) + + def freeze(self): + """Freeze the scene, for serialization""" + self.frozen = True + self._world.freeze() + + def thaw(self): + """Unfreeze""" + self._world.thaw() + self.frozen = False def draw(self, screen_surface): self._world.update()
--- a/skaapsteker/menuscene.py Mon Apr 04 20:46:44 2011 +0200 +++ b/skaapsteker/menuscene.py Mon Apr 04 20:53:45 2011 +0200 @@ -6,12 +6,16 @@ from .widgets.text import Text, TextChoice class MenuScene(Scene): - def __init__(self): + def __init__(self, cur_game=None): super(MenuScene, self).__init__() self.widgets.append(Text("MENU:", (50, 50), color='white', size=48)) - choice = TextChoice(("level1", "level2", "Quit"), (50, 100), color='white') - choice.callbacks.append(self.selected) - self.widgets.append(choice) + self.cur_game = cur_game + if cur_game is None: + self.choice = TextChoice(("level1", "level2", "Quit"), (50, 100), color='white') + else: + self.choice = TextChoice(("level1", "level2", "Resume Game", "Quit"), (50, 100), color='white') + self.choice.callbacks.append(self.selected) + self.widgets.append(self.choice) def selected(self, option): "Callback from menu TextChoice" @@ -19,8 +23,11 @@ ChangeScene.post(LevelScene('level1')) elif option == 1: ChangeScene.post(LevelScene('level2')) - elif option == 2: + elif option == len(self.choice.options) - 1: pygame.event.post(pygame.event.Event(QUIT)) + elif option == 2 and self.cur_game is not None: + self.cur_game.thaw() + ChangeScene.post(self.cur_game) def draw(self, surface): surface.fill(pygame.Color('black'))
--- a/skaapsteker/physics.py Mon Apr 04 20:46:44 2011 +0200 +++ b/skaapsteker/physics.py Mon Apr 04 20:53:45 2011 +0200 @@ -90,6 +90,12 @@ self._collision_groups = { None: pygame.sprite.Group() } self._last_time = None + def freeze(self): + self._last_time = None + + def thaw(self): + self._last_time = time.time() + def add(self, sprite): sprite.init_pos() self._all.add(sprite)