Mercurial > mamba
view mamba/sprites.py @ 104:5b92ff941de3
Refactor sprites.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 19:52:49 +0200 |
parents | 7ce2d2d8381a |
children | 87acd3ddc972 |
line wrap: on
line source
from pygame.sprite import Sprite from mamba.data import load_image from mamba.constants import TILE_SIZE def tile_sizify(pos): ts_x, ts_y = TILE_SIZE p_x, p_y = pos return (ts_x * p_x, ts_y * p_y) class BaseSprite(Sprite): tileset = 'common' def __init__(self, tileset=None, image_name=None): super(BaseSprite, self).__init__() if tileset is not None: self.tileset = tileset if image_name is not None: self.image = self.load_image(image_name) def load_image(self, image_name, mutators=()): return load_image('tiles/%s/%s.png' % (self.tileset, image_name), mutators) def set_tile_pos(self, tile_pos): self.tile_pos = tile_pos self.rect = self.image.get_rect().move(tile_sizify(tile_pos)) class TileSprite(BaseSprite): def __init__(self, tileset, **kw): kw['tileset'] = tileset super(TileSprite, self).__init__(**kw) class SingleImageTileSprite(TileSprite): def __init__(self, **kw): kw.setdefault('image_name', self.image_name) super(SingleImageTileSprite, self).__init__(**kw) class DoorSprite(TileSprite): def __init__(self, colour, **kw): self.colour = colour image_name = 'door_%s' % (colour,) kw.setdefault('image_name', image_name) super(DoorSprite, self).__init__(**kw) class EntrySprite(SingleImageTileSprite): image_name = 'entrance-1' def __init__(self, direction, **kw): self.direction = direction super(EntrySprite, self).__init__(**kw) class ExitSprite(SingleImageTileSprite): image_name = 'exit-1' class PuddleSprite(SingleImageTileSprite): image_name = 'puddle'