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():