Mercurial > mamba
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) |