Advance through the levels
[erdslangetjie.git] / erdslangetjie / level.py
index 645a62f7678aca49f89f85a024dbaf4cc9ecd327..283588c087f53a69d05e232c0e393e6822f54e62 100644 (file)
@@ -1,19 +1,16 @@
 # The level object
 
-from data import load_image
+import os
+from data import load_image, load, filepath
 
 
 class Level(object):
 
-    def __init__(self):
+    def __init__(self, levelfile):
         self.data = []
         self.exit_pos = []
         self.enter_pos = None
         self.tiles = []
-
-    def load(self, levelfile):
-        """Load the level"""
-        self.data = []
         # Because of how kivy's coordinate system works,
         # we reverse the lines so things match up between
         # the file and the display (top of file == top of display)
@@ -60,3 +57,32 @@ class Level(object):
         if tile == '.':
             return True
         return False
+
+
+class LevelList(object):
+
+    LEVELS = 'level_list'
+
+    def __init__(self):
+        self.levels = []
+        level_list = load(self.LEVELS)
+        for line in level_list:
+            line = line.strip()
+            if os.path.exists(filepath(line)):
+                level_file = load(line)
+                self.levels.append(Level(level_file))
+                level_file.close()
+            else:
+                print 'Level list includes non-existant level %s' % line
+        level_list.close()
+        self._cur_level = 0
+
+    def get_current_level(self):
+        if self._cur_level < len(self.levels):
+            return self.levels[self._cur_level]
+        else:
+            return None
+
+    def advance_to_next_level(self):
+        self._cur_level += 1
+        return self.get_current_level()