comparison 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
comparison
equal deleted inserted replaced
398:11ee864cd3e3 399:12d67f69e6b2
1 """Level menu.""" 1 """Level menu."""
2
3 import os
4 import urllib2
2 5
3 from mamba.habitats.levelmenu import LevelMenu 6 from mamba.habitats.levelmenu import LevelMenu
4 from mamba.level import Level 7 from mamba.level import Level
5 from mamba.constants import LEVEL_SERVER 8 from mamba.constants import LEVEL_SERVER
6 9 from mamba.gamestate import get_user_levels_dir
7 import urllib2
8 10
9 11
10 class UserLevelApi(object): 12 class UserLevelApi(object):
11 13
12 def __init__(self, ctype, url=LEVEL_SERVER, timeout=5): 14 def __init__(self, ctype, url=LEVEL_SERVER, timeout=5):
59 if name not in self.cache: 61 if name not in self.cache:
60 self._populate_level(name) 62 self._populate_level(name)
61 return self.cache[name] 63 return self.cache[name]
62 64
63 65
64 class UserLevelMenu(LevelMenu): 66 class NetworkLevelMenu(LevelMenu):
65 67
66 API = UserLevelApi("curated") 68 API = UserLevelApi("curated")
69
70 @property
71 def level_namespace(self):
72 self.API.level_namespace
67 73
68 def list_levels(self): 74 def list_levels(self):
69 return self.API.list_levels() 75 return self.API.list_levels()
70 76
71 def get_level(self, name): 77 def get_level(self, name):
72 return self.API.get_level(name) 78 return self.API.get_level(name)
79
80
81 class UserLevelMenu(LevelMenu):
82
83 level_namespace = "user"
84
85 def list_levels(self):
86 levels_dir = get_user_levels_dir()
87 levels = [os.path.splitext(fn)[0] for fn in os.listdir(levels_dir)
88 if fn.lower().endswith('.txt')]
89 return levels
90
91 def get_level(self, name):
92 levels_dir = get_user_levels_dir()
93 source = open(os.path.join(levels_dir, name + '.txt')).read()
94 return Level(name, self.level_namespace, source)