# HG changeset patch # User Jeremy Thurgood # Date 1316265597 -7200 # Node ID f1ba457772ae1feeb360ced0b847b51efdb677e8 # Parent 442007704a9a9bff7fc2699c090f64585e2f8b0f Go to next level, not back to menu. (Official levels only, though.) diff -r 442007704a9a -r f1ba457772ae TODO.txt --- 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: diff -r 442007704a9a -r f1ba457772ae mamba/habitats/level.py --- 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 diff -r 442007704a9a -r f1ba457772ae mamba/habitats/levelmenu.py --- 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())