Mercurial > mamba
diff mamba/sprites.py @ 130:9bef49d6db86
Ugly yucky half-done tile orientation magic.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 22:19:59 +0200 |
parents | f670ef33ae2e |
children | e0b4bfc51336 |
line wrap: on
line diff
--- a/mamba/sprites.py Sun Sep 11 22:11:15 2011 +0200 +++ b/mamba/sprites.py Sun Sep 11 22:19:59 2011 +0200 @@ -2,6 +2,7 @@ from mamba.data import load_image from mamba.constants import TILE_SIZE +from mamba import mutators def tile_sizify(pos): @@ -13,13 +14,21 @@ class BaseSprite(Sprite): tileset = 'common' - def __init__(self, tile_char=None, tileset=None, image_name=None): + variant_suffix_0 = '' + variant_suffix_1 = '' + variant_suffix_2o = '' + variant_suffix_2a = '' + variant_suffix_3 = '' + variant_suffix_4 = '' + + def __init__(self, tile_char=None, tileset=None, image_name=None, + mutators=()): super(BaseSprite, self).__init__() self.tile_char = tile_char if tileset is not None: self.tileset = tileset if image_name is not None: - self.image = self.load_image(image_name) + self.image = self.load_image(image_name, mutators=mutators) def load_image(self, image_name, mutators=()): return load_image('tiles/%s/%s.png' % (self.tileset, image_name), @@ -29,6 +38,30 @@ self.tile_pos = tile_pos self.rect = self.image.get_rect().move(tile_sizify(tile_pos)) + def get_tile_variant_modifiers(self, image_name, top, bottom, left, right): + variant_str = ''.join('X' if d else '.' + for d in [top, bottom, left, right]) + variant_suffix, mutator = { + '....': (self.variant_suffix_0, mutators.NULL), + 'X...': (self.variant_suffix_1, mutators.UP), + '.X..': (self.variant_suffix_1, mutators.DOWN), + '..X.': (self.variant_suffix_1, mutators.LEFT), + '...X': (self.variant_suffix_1, mutators.RIGHT), + 'XX..': (self.variant_suffix_2o, mutators.VERT), + '..XX': (self.variant_suffix_2o, mutators.HORIZ), + 'X.X.': (self.variant_suffix_2a, mutators.TL), + 'X..X': (self.variant_suffix_2a, mutators.TR), + '.XX.': (self.variant_suffix_2a, mutators.BL), + '.X.X': (self.variant_suffix_2a, mutators.BR), + '.XXX': (self.variant_suffix_3, mutators.UP), + 'X.XX': (self.variant_suffix_3, mutators.DOWN), + 'XX.X': (self.variant_suffix_3, mutators.LEFT), + 'XXX.': (self.variant_suffix_3, mutators.RIGHT), + 'XXXX': (self.variant_suffix_4, mutators.NULL), + }[variant_str] + + return (image_name + variant_suffix, (mutator,)) + class TileSprite(BaseSprite): def __init__(self, tileset, **kw): @@ -67,3 +100,13 @@ class PuddleSprite(SingleImageTileSprite): image_name = 'puddle' + + variant_suffix_0 = '-island' + variant_suffix_1 = '-r' + variant_suffix_2a = '-tl' + + def __init__(self, variant=(0, 0, 0, 0), **kw): + super(PuddleSprite, self).__init__(**kw) + image_name, mutators = self.get_tile_variant_modifiers(self.image_name, + *variant) + self.image = self.load_image(image_name, mutators)