Mercurial > mamba
changeset 104:5b92ff941de3
Refactor sprites.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 19:52:49 +0200 |
parents | 45397addd80d |
children | 87acd3ddc972 |
files | mamba/level.py mamba/sprites.py |
diffstat | 2 files changed, 30 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/level.py Sun Sep 11 19:50:58 2011 +0200 +++ b/mamba/level.py Sun Sep 11 19:52:49 2011 +0200 @@ -15,21 +15,25 @@ pass +def mktile(cls, **kw): + return (cls, kw) + + TILE_MAP = { '.': None, - 'X': (TileSprite, 'wall'), - 'R': (DoorSprite, 'red'), - 'B': (DoorSprite, 'blue'), - '^': (EntrySprite, Snake.UP), - 'v': (EntrySprite, Snake.DOWN), - '<': (EntrySprite, Snake.LEFT), - '>': (EntrySprite, Snake.RIGHT), - 'E': (ExitSprite,), - '~': (PuddleSprite,), + 'X': mktile(TileSprite, image_name='wall'), + 'R': mktile(DoorSprite, colour='red'), + 'B': mktile(DoorSprite, colour='blue'), + '^': mktile(EntrySprite, direction=Snake.UP), + 'v': mktile(EntrySprite, direction=Snake.DOWN), + '<': mktile(EntrySprite, direction=Snake.LEFT), + '>': mktile(EntrySprite, direction=Snake.RIGHT), + 'E': mktile(ExitSprite), + '~': mktile(PuddleSprite), } THING_MAP = { - 'a': (BaseSprite, 'common', 'snake/snake-head-r'), + 'a': mktile(BaseSprite, image_name='snake/snake-head-r'), } @@ -40,10 +44,10 @@ def load_tiles(self): self.tiles = {} - self.floor = TileSprite(self.name, 'floor').image + self.floor = TileSprite(tileset=self.name, image_name='floor').image for name, value in TILE_MAP.items(): if value is not None: - value = (value[0], self.name) + value[1:] + value[1]['tileset'] = self.name self.tiles[name] = value self.tiles.update(THING_MAP) @@ -54,7 +58,7 @@ raise InvalidMapError("Unknown tile type: '%s'" % key) if not tilespec: return None - return tilespec[0](*tilespec[1:]) + return tilespec[0](**tilespec[1]) def get_tile(self, key, tile_pos, *groups): tile = self[key]
--- a/mamba/sprites.py Sun Sep 11 19:50:58 2011 +0200 +++ b/mamba/sprites.py Sun Sep 11 19:52:49 2011 +0200 @@ -30,33 +30,35 @@ class TileSprite(BaseSprite): - def __init__(self, tileset, image_name): - super(TileSprite, self).__init__(tileset, image_name) + def __init__(self, tileset, **kw): + kw['tileset'] = tileset + super(TileSprite, self).__init__(**kw) class SingleImageTileSprite(TileSprite): - def __init__(self, tileset): - super(SingleImageTileSprite, self).__init__(tileset, self.image_name) + def __init__(self, **kw): + kw.setdefault('image_name', self.image_name) + super(SingleImageTileSprite, self).__init__(**kw) class DoorSprite(TileSprite): - def __init__(self, tileset_name, colour): + def __init__(self, colour, **kw): self.colour = colour image_name = 'door_%s' % (colour,) - super(DoorSprite, self).__init__(tileset_name, image_name) + kw.setdefault('image_name', image_name) + super(DoorSprite, self).__init__(**kw) class EntrySprite(SingleImageTileSprite): - image_name = 'puddle-r' + image_name = 'entrance-1' - def __init__(self, tileset_name, direction): + def __init__(self, direction, **kw): self.direction = direction - super(EntrySprite, self).__init__(tileset_name) + super(EntrySprite, self).__init__(**kw) class ExitSprite(SingleImageTileSprite): - # image_name = 'exit' - image_name = 'puddle-tl' + image_name = 'exit-1' class PuddleSprite(SingleImageTileSprite):