view skaapsteker/data.py @ 597:576921b65909

Fix small typo. Celestial sphere only requires 8 tails to enter.
author Simon Cross <hodgestar@gmail.com>
date Sun, 10 Apr 2011 19:51:29 +0200
parents 2258c2a6dbae
children
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.image
import pygame.display


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(filename, mode='rb'):
    '''Open a file in the data directory.

    "mode" is passed as the second arg to open().
    '''
    return open(filepath(filename), mode)


DIR_LISTS = {}

def get_files(folder):
    """Return a sorted list of files in the given directory, with the directory stripped"""
    if folder not in DIR_LISTS:
        DIR_LISTS[folder] = sorted(os.listdir(filepath(folder)))
    return DIR_LISTS[folder]


IMAGES = {}

def load_image(filename):
    if filename not in IMAGES:
        IMAGES[filename] = pygame.image.load(load(filename))
        if pygame.display.get_init():
            IMAGES[filename] = IMAGES[filename].convert_alpha(pygame.display.get_surface())
    return IMAGES[filename]