Mercurial > mamba
view mamba/data.py @ 157:31881bf8ddda
Lockable text button
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 13 Sep 2011 22:42:44 +0200 |
parents | 666a0760241e |
children | e768056b0588 |
line wrap: on
line source
'''Simple data loader module. Loads data files from the "data" directory shipped with a game. Enhancing this to handle caching etc. is left as an exercise for the reader. Note that pyglet users should probably just add the data directory to the pyglet.resource search path. ''' import os import pygame data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) 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_file(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) IMAGES = {} MUTATED_IMAGES = {} def load_image(filename, mutators=()): key = (filename, mutators) if key in MUTATED_IMAGES: return MUTATED_IMAGES[key] if filename in IMAGES: image = IMAGES[filename] else: image = pygame.image.load(filepath(filename)) image = image.convert_alpha(pygame.display.get_surface()) IMAGES[filename] = image for mutator in mutators: image = mutator(image) MUTATED_IMAGES[key] = image return image