Mercurial > mamba
changeset 415:f1ba457772ae
Go to next level, not back to menu. (Official levels only, though.)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 15:19:57 +0200 |
parents | 442007704a9a |
children | 30ce046d08c3 |
files | TODO.txt mamba/habitats/level.py mamba/habitats/levelmenu.py |
diffstat | 3 files changed, 30 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/TODO.txt Sat Sep 17 14:53:18 2011 +0200 +++ b/TODO.txt Sat Sep 17 15:19:57 2011 +0200 @@ -14,8 +14,10 @@ * Test on Windows * Improve Arrow behavior when on arrow and arrow rotator button * Sleep -* When finishing a level, go to next instead of menu * Don't pause forever while loading unofficial levels + * For user levels, we can update the cache on level save, but that + would require a more global cache. Maybe centralise this in + data.py or somewhere? * Two colours plus eating bug Source:
--- a/mamba/habitats/level.py Sat Sep 17 14:53:18 2011 +0200 +++ b/mamba/habitats/level.py Sat Sep 17 15:19:57 2011 +0200 @@ -11,9 +11,10 @@ class LevelHabitat(Habitat): - def __init__(self, level, go_menu): + def __init__(self, level, go_menu, go_next_level): super(LevelHabitat, self).__init__() self.go_menu = go_menu + self.go_next_level = go_next_level self.world = World(level) game_widget = GameWidget(self.world) self.container.add(game_widget) @@ -30,6 +31,6 @@ if not self.world.pause(): return False self.display_dialog( - MessageBox((300, 200), 'Level complete!', self.go_menu)) + MessageBox((300, 200), 'Level complete!', self.go_next_level)) level_done(self.world.level.unique_name()) return True
--- a/mamba/habitats/levelmenu.py Sat Sep 17 14:53:18 2011 +0200 +++ b/mamba/habitats/levelmenu.py Sat Sep 17 15:19:57 2011 +0200 @@ -63,9 +63,14 @@ def level_selected(self, ev, widget, name): from mamba.habitats.level import LevelHabitat - NewHabitatEvent.post(LevelHabitat(widget.level, self.go_menu)) + next_level = self.mk_next_level(name) + NewHabitatEvent.post( + LevelHabitat(widget.level, self.go_menu, next_level)) return True + def mk_next_level(self, name): + return self.go_menu + @classmethod def go_menu(cls): NewHabitatEvent.post(cls()) @@ -84,6 +89,24 @@ level_namespace = 'official' + def mk_next_level(self, name): + levels = self.list_levels() + if name not in levels: + return self.go_menu + idx = levels.index(name) + 1 + if idx >= len(levels): + return self.go_menu + next_name = levels[idx] + + def next_level(): + from mamba.habitats.level import LevelHabitat + next_level = self.mk_next_level(next_name) + NewHabitatEvent.post(LevelHabitat(self.get_level(next_name), + self.go_menu, next_level)) + + print "next_level end" + return next_level + def list_levels(self): if not OFFICIAL_LEVELS: OFFICIAL_LEVELS.extend(get_official_levels())