changeset 473:124bfe426834

Load one level at a time instead of all at once. (Official levels only.)
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 17 Sep 2011 21:55:12 +0200
parents 1e299187884b
children 590aa23648f8
files mamba/habitats/levelmenu.py
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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()