diff mamba/habitats/userlevelmenu.py @ 399:12d67f69e6b2

Support for user levels.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 17 Sep 2011 11:28:18 +0200
parents d759f49c477d
children 001c3797a63b
line wrap: on
line diff
--- a/mamba/habitats/userlevelmenu.py	Sat Sep 17 11:02:37 2011 +0200
+++ b/mamba/habitats/userlevelmenu.py	Sat Sep 17 11:28:18 2011 +0200
@@ -1,10 +1,12 @@
 """Level menu."""
 
+import os
+import urllib2
+
 from mamba.habitats.levelmenu import LevelMenu
 from mamba.level import Level
 from mamba.constants import LEVEL_SERVER
-
-import urllib2
+from mamba.gamestate import get_user_levels_dir
 
 
 class UserLevelApi(object):
@@ -61,12 +63,32 @@
         return self.cache[name]
 
 
-class UserLevelMenu(LevelMenu):
+class NetworkLevelMenu(LevelMenu):
 
     API = UserLevelApi("curated")
 
+    @property
+    def level_namespace(self):
+        self.API.level_namespace
+
     def list_levels(self):
         return self.API.list_levels()
 
     def get_level(self, name):
         return self.API.get_level(name)
+
+
+class UserLevelMenu(LevelMenu):
+
+    level_namespace = "user"
+
+    def list_levels(self):
+        levels_dir = get_user_levels_dir()
+        levels = [os.path.splitext(fn)[0] for fn in os.listdir(levels_dir)
+                  if fn.lower().endswith('.txt')]
+        return levels
+
+    def get_level(self, name):
+        levels_dir = get_user_levels_dir()
+        source = open(os.path.join(levels_dir, name + '.txt')).read()
+        return Level(name, self.level_namespace, source)