changeset 52:46f33d277b4d

faster darkness
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sun, 28 Aug 2011 17:37:00 +0200
parents 1e347ff94ea6
children 11633a298288
files src/display.py src/level.py
diffstat 2 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/display.py	Sun Aug 28 17:17:17 2011 +0200
+++ b/src/display.py	Sun Aug 28 17:37:00 2011 +0200
@@ -118,9 +118,9 @@
         self.scroll_offset = (0, 0)
         self.background = pygame.Surface((map_size[0] * 24, map_size[1] * 16))
         self.background.fill((0, 0, 0))
-        self.fog = pygame.Surface((map_size[0] * 24, map_size[1] * 16),
-                                  pygame.SRCALPHA)
-        self.fog.fill((255, 255, 255))
+        self.fog = pygame.Surface((map_size[0] * 24, map_size[1] * 16))
+        self.fog.fill((0, 0, 0))
+        self.fog.set_colorkey((255, 255, 255))
         self.sprites.empty()
         self.shadows.empty()
         self.overlay.empty()
@@ -171,8 +171,7 @@
         self.screen.blit(self.fog, (0, 0),
             pygame.rect.Rect(
                 (-self.scroll_offset[0], -self.scroll_offset[1]),
-                (self.screen.get_width(), self.screen.get_height())),
-                pygame.BLEND_RGBA_SUB)
+                (self.screen.get_width(), self.screen.get_height())))
         self.effects.draw(self.screen)
         self._sprite_shift(self.shadows, self.scroll_offset, reverse=True)
         self._sprite_shift(self.sprites, self.scroll_offset, reverse=True)
@@ -207,7 +206,7 @@
         dirty += self.effects.draw(self.screen)
         for d in dirty:
             r = d.move(-self.scroll_offset[0], -self.scroll_offset[1])
-            self.screen.blit(self.fog, d.topleft, r, pygame.BLEND_RGBA_SUB)
+            self.screen.blit(self.fog, d.topleft, r)
         self.effects.draw(self.screen)
         self._sprite_shift(self.shadows, self.scroll_offset, reverse=True)
         self._sprite_shift(self.sprites, self.scroll_offset, reverse=True)
--- a/src/level.py	Sun Aug 28 17:17:17 2011 +0200
+++ b/src/level.py	Sun Aug 28 17:37:00 2011 +0200
@@ -166,13 +166,13 @@
                 if not self.flags[y][x] & self.EXPLORED:
                     update = True
                     self.flags[y][x] |= self.EXPLORED
-                    to_display.fog.fill((0, 0, 0),
-                                        rect=(x * 24, y * 16, 24, 16))
                 else:
                     holes.add((x - area[0], y - area[1]))
-
         if not update:
             return
+        to_display.fog.fill((255, 255, 255), rect=(
+            area[0] * 24, area[1] * 16,
+            (area[2] - area[0]) * 24, (area[3] - area[1]) * 16))
         dark = display.Darkness(area[0], area[1], area[2] - area[0],
                                 area[3] - area[1], holes)
         to_display.darkness.add(dark)
@@ -180,8 +180,9 @@
     def render_map(self, to_display, area):
         if area is None:
             area = (0, 0, len(self.map[0]), len(self.map))
-        to_display.background.fill((0, 0, 0), rect=pygame.rect.Rect(area[0]*24,
-            area[1]*16, (area[2] - area[0]) * 24, (area[3] - area[1]) * 16))
+        to_display.background.fill((0, 0, 0), rect=(
+            area[0]*24, area[1]*16,
+            (area[2] - area[0]) * 24, (area[3] - area[1]) * 16))
         for y, line in enumerate(self.map[area[1]:area[3]]):
             for x, c in enumerate(line[area[0]:area[2]]):
                 tile_class = self.key.get(c)