Mercurial > mamba
diff mamba/data.py @ 402:001c3797a63b
Editor now uses templates and the user level directory.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 12:56:26 +0200 |
parents | 00c36ff53de9 |
children | b49f6dde8731 |
line wrap: on
line diff
--- a/mamba/data.py Sat Sep 17 11:45:24 2011 +0200 +++ b/mamba/data.py Sat Sep 17 12:56:26 2011 +0200 @@ -12,24 +12,28 @@ import pygame +from mamba.gamestate import save_path + data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) -def filepath(filename): +def filepath(filename, is_user_dir=False): '''Determine the path to a file in the data directory. ''' filename = os.path.join(*filename.split('/')) + if is_user_dir: + return os.path.join(save_path(filename)) return os.path.join(data_dir, filename) -def load_file(filename, mode='rb'): +def load_file(filename, mode='rb', is_user_dir=False): '''Open a file in the data directory. "mode" is passed as the second arg to open(). ''' - return open(os.path.join(data_dir, filename), mode) + return open(filepath(filename, is_user_dir), mode) IMAGES = {} @@ -66,13 +70,27 @@ return os.path.isdir(os.path.join(data_dir, 'tiles', tileset)) -def check_level_exists(level): +def check_level_exists(level, level_dir, is_user_dir=False): return os.path.isfile(os.path.join(data_dir, 'levels', '%s.txt' % level)) -def get_level_list(): - files = [os.path.splitext(x) for x in os.listdir(filepath('levels'))] - return [x[0] for x in files if x[1] == '.txt'] +def get_official_levels(): + f = open(filepath('levels/index.txt')) + levels = [] + for line in f.readlines(): + line = line.strip() + if line and line[0] != '#': + levels.append(line) + return levels + + +def get_level_list(level_dir, is_user_dir=False): + level_dir = filepath(level_dir, is_user_dir) + if is_user_dir: + if not os.path.isdir(level_dir): + os.makedirs(level_dir) + files = [os.path.splitext(x) for x in os.listdir(level_dir)] + return [name for name, ext in files if ext == '.txt'] def get_tileset_list():