X-Git-Url: https://git.ctpug.org.za/?p=erdslangetjie.git;a=blobdiff_plain;f=erdslangetjie%2Fdata.py;h=2ee869120d5880f9c5bbf1c7bbf3b9d5435cc1c6;hp=6cca470f4f926b04ea0e84cb727df843cc585b2d;hb=HEAD;hpb=bbbe943d8b35fd351814aaef8f73a171c0f600b3 diff --git a/erdslangetjie/data.py b/erdslangetjie/data.py index 6cca470..2ee8691 100644 --- a/erdslangetjie/data.py +++ b/erdslangetjie/data.py @@ -10,10 +10,14 @@ pyglet.resource search path. 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')) -loader = ImageLoader() +imageloader = ImageLoader() +soundloader = SoundLoader() +Cache.register('bane', limit=200) def filepath(filename): @@ -31,7 +35,21 @@ def load(filename, mode='rb'): 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): - '''Load an image into a kivy texture. We rely on kivy's caching - infrastructure''' - return loader.load(filepath(filename)) + return _cache_load(filename, imageloader) + + +def load_sound(filename): + return _cache_load(filename, soundloader)