Mercurial > mhrok
changeset 37:18646f021d62
Move render_level and render_sprites to display
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sat, 10 Mar 2012 12:12:15 +0100 |
| parents | 3d3c523edefe |
| children | b637ee420b8a |
| files | mhrok/display.py |
| diffstat | 1 files changed, 60 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mhrok/display.py Sat Mar 10 12:09:02 2012 +0100 +++ b/mhrok/display.py Sat Mar 10 12:12:15 2012 +0100 @@ -35,8 +35,8 @@ def render_level(self, level): (self.sprites, - self.shadows, self.visions) = level.render_sprites(self.tiles) - self.background.blit(level.render_background(self.tiles), (0, 0)) + self.shadows, self.visions) = render_sprites(level, self.tiles) + self.background.blit(render_background(level, self.tiles), (0, 0)) def light_room(self, room): (rx, ry), (rw, rh) = room @@ -90,3 +90,61 @@ tiles.append(image.subsurface(rect)) return tiles +def render_background(level, tiles): + background = pygame.Surface((level.width * 20 + 20, level.height * 12 + 20)) + background.fill((16, 8, 0)) + blood = tiles[21].copy() + blood.set_alpha(220) + blood2 = tiles[22].copy() + blood2.set_alpha(220) + for y, row in enumerate(level.map): + for x, square in enumerate(row): + pos = x * 20 + 4, y * 12 + border = 0 + if square == 1: + background.blit(tiles[23], pos) + border = 4 + elif square == 2: + background.blit(tiles[33], pos) + border = 24 + elif square == 3: + background.blit(tiles[23], pos) + background.blit(blood, pos) + border = 4 + elif square == 4: + background.blit(tiles[23], pos) + background.blit(blood2, pos) + border = 4 + elif square == 5: + background.blit(tiles[38], pos) + border = 4 + elif square < 0: + background.blit(tiles[39 - square], pos) + border = 24 + if border: + if not level[x - 1, y]: + background.blit(tiles[5 + border], pos) + if not level[x + 1, y]: + background.blit(tiles[15 + border], pos) + if not level[x, y - 1]: + background.blit(tiles[border], pos) + if not level[x, y + 1]: + background.blit(tiles[10 + border], pos) + + return background + +def render_sprites(level, tiles): + sprites = SortedUpdates() + shadows = pygame.sprite.RenderUpdates() + visions = pygame.sprite.LayeredDirty() + for mob in level.mobs: + sprite, shadow, vision = mob.make_sprite(tiles) + if sprite: + sprites.add(sprite) + if shadow: + shadows.add(shadow) + if vision: + visions.add(vision) + return sprites, shadows, visions + +
