Mercurial > mamba
diff mamba/level.py @ 50:1b725035b8ef
Levels that are visible.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 15:29:52 +0200 |
parents | 9a0ae29c7f5e |
children | e730ec8b82e8 |
line wrap: on
line diff
--- a/mamba/level.py Sun Sep 11 15:24:37 2011 +0200 +++ b/mamba/level.py Sun Sep 11 15:29:52 2011 +0200 @@ -2,30 +2,10 @@ Level for our shiny game. """ -from pygame.sprite import Sprite -from pygame.surface import Surface - -from mamba.data import load_file, load_image - -TILE_SIZE = (20, 20) - +from pygame.sprite import RenderUpdates -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 TileSprite(Sprite): - def __init__(self, image_path, *groups): - super(TileSprite, self).__init__(*groups) - if image_path is None: - self.image = Surface(TILE_SIZE) - else: - self.image = load_image(image_path) - - def set_tile_pos(self, tile_pos): - self.rect = self.image.get_rect().move(tile_sizify(tile_pos)) +from mamba.data import load_file +from mamba.sprites import tile_sizify, TileSprite, ThingSprite TILE_MAP = { @@ -34,7 +14,7 @@ } THING_MAP = { - 'a': (TileSprite, 'tiles/dev/randomtile.png'), + 'a': (ThingSprite, 'snake-head-r'), } @@ -45,20 +25,23 @@ def load_tiles(self): self.tiles = {} - for k, v in TILE_MAP.items(): - if v: - v = 'tiles/%s/%s.png' % (self.name, v) - self.tiles[k] = (TileSprite, (v,)) - for k, v in THING_MAP.items(): - self.tiles[k] = (v[0], v[1:]) + for name, value in TILE_MAP.items(): + if value is not None: + value = (TileSprite, self.name, value) + self.tiles[name] = value + self.tiles.update(THING_MAP) def __getitem__(self, key): - cls, args = self.tiles[key] - return cls(*args) + tilespec = self.tiles[key] + if not tilespec: + return None + return tilespec[0](*tilespec[1:]) - def get_tile(self, key, tile_pos): + def get_tile(self, key, tile_pos, *groups): tile = self[key] - tile.set_tile_pos(tile_pos) + if tile: + tile.add(*groups) + tile.set_tile_pos(tile_pos) return tile @@ -75,7 +58,8 @@ tileset_name = level_data.readline().strip() self.tileset = Tileset(tileset_name) tiles_ascii = level_data.readlines() - self.tiles = [[self.tileset.get_tile(tile, (x, y)) + self.tilegroup = RenderUpdates() + self.tiles = [[self.tileset.get_tile(tile, (x, y), self.tilegroup) for x, tile in enumerate(row.strip())] for y, row in enumerate(tiles_ascii)]