'''
import os
+from kivy.core.image import ImageLoader
+from kivy.core.audio import SoundLoader
+from kivy.cache import Cache
data_py = os.path.abspath(os.path.dirname(__file__))
data_dir = os.path.normpath(os.path.join(data_py, '..', 'data'))
+imageloader = ImageLoader()
+soundloader = SoundLoader()
+Cache.register('bane', limit=200)
+
def filepath(filename):
'''Determine the path to a file in the data directory.
'''
+ filename = os.path.join(*filename.split('/'))
return os.path.join(data_dir, filename)
+
def load(filename, mode='rb'):
'''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), mode)
+
+
+def _cache_load(filename, loader):
+ '''Load an object either from disk or from the cache.
+
+ We rely on kivy's caching infrastructure'''
+ path = filepath(filename)
+ obj = Cache.get('bane', path)
+ if obj is None:
+ obj = loader.load(path)
+ Cache.append('bane', path, obj)
+ return obj
+
+
+def load_image(filename):
+ return _cache_load(filename, imageloader)
+
+def load_sound(filename):
+ return _cache_load(filename, soundloader)