# HG changeset patch # User Jeremy Thurgood # Date 1316289312 -7200 # Node ID 124bfe4268342824198d740a77187bf2b50c4b78 # Parent 1e299187884b2295fa3657484c6e1cddbce38611 Load one level at a time instead of all at once. (Official levels only.) diff -r 1e299187884b -r 124bfe426834 mamba/habitats/levelmenu.py --- a/mamba/habitats/levelmenu.py Sat Sep 17 21:54:43 2011 +0200 +++ b/mamba/habitats/levelmenu.py Sat Sep 17 21:55:12 2011 +0200 @@ -66,6 +66,16 @@ self.level_buttons[name] = button def setup_levels(self): + if not getattr(self, '_setup_gen', None): + self._setup_gen = self._setup_levels_gen() + try: + self._setup_gen.next() + HabitatSetupEvent.post() + except StopIteration: + # We're done here. + return + + def _setup_levels_gen(self): del self.grid_container.children[:] levels = list(self.list_levels()) if self.page * self.WIDTH * self.HEIGHT > len(levels): @@ -75,7 +85,7 @@ first = self.page * self.WIDTH * self.HEIGHT last = first + (self.WIDTH * self.HEIGHT) for i, name in enumerate(levels[first:last]): - self.setup_level(i, name) + yield self.setup_level(i, name) if self.page == 0: self.prev_button.disable()