Mercurial > nagslang
changeset 95:ecba9550ad8d
Fill the exterior with the blackness of space
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Mon, 02 Sep 2013 11:20:04 +0200 |
parents | 9ef5c5810dcd |
children | a9b564c38bef |
files | nagslang/level.py |
diffstat | 1 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/level.py Mon Sep 02 11:20:17 2013 +0200 +++ b/nagslang/level.py Mon Sep 02 11:20:04 2013 +0200 @@ -24,6 +24,7 @@ self.basetile = 'tiles/floor.png' self._tile_image = None self._surface = None + self._exterior = False def load(self): @@ -62,7 +63,8 @@ if index: add_polygon(polygon, index, num_points) - def save(self): + def all_closed(self): + """Check if all the polygons are closed""" closed = True for poly in self.polygons.values(): if len(poly) == 0: @@ -74,6 +76,10 @@ elif poly[-1] != poly[0]: closed = False print "\033[31mError: polygon not closed\033[0m" + return closed + + def save(self): + closed = self.all_closed() if not closed: print 'Not saving the level' return @@ -113,10 +119,26 @@ def get_background(self): self._draw_background() + self._draw_exterior() # Draw polygons self._draw_walls() return self._surface + def _draw_exterior(self, force=False): + """Fill the exterior of the level with black""" + if self._exterior and not force: + return + surface = pygame.surface.Surface((self.x, self.y), pgl.SRCALPHA) + surface.fill(pygame.color.THECOLORS["black"]) + for index, polygon in self.polygons.items(): + if len(polygon) > 1: + pointlist = [self.point_to_pygame(p) for p in polygon] + # filled polygons + pygame.draw.polygon(surface, pygame.color.THECOLORS['white'], + pointlist, 0) + self._surface.blit(surface, (0, 0), special_flags=pgl.BLEND_RGBA_MULT) + self._exterior = True + def _draw_background(self, force=False): if self._tile_image is None: self._tile_image = resources.get_image(self.basetile)