changeset 362:d0aeb893967d

Transparent moonlight
author Neil Muller <drnlmuller@gmail.com>
date Fri, 06 Sep 2013 20:12:07 +0200
parents 534eac55a178
children 3dd08e18580f
files nagslang/game_object.py nagslang/render.py nagslang/utils.py
diffstat 3 files changed, 14 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/game_object.py	Fri Sep 06 20:10:46 2013 +0200
+++ b/nagslang/game_object.py	Fri Sep 06 20:12:07 2013 +0200
@@ -10,7 +10,7 @@
 from nagslang.constants import (
     COLLISION_TYPE_DOOR, COLLISION_TYPE_FURNITURE, COLLISION_TYPE_PROJECTILE,
     COLLISION_TYPE_SWITCH, COLLISION_TYPE_WEREWOLF_ATTACK,
-    SWITCH_PUSHERS, ZORDER_FLOOR, ZORDER_LOW)
+    SWITCH_PUSHERS, ZORDER_FLOOR, ZORDER_LOW, ZORDER_HIGH)
 from nagslang.resources import resources
 from nagslang.events import DoorEvent
 
@@ -498,7 +498,7 @@
     def __init__(self, space, pos, vector, damage):
         body = make_body(1, pymunk.inf,
                          (pos[0] + (vector.length * math.cos(vector.angle)),
-                         pos[1] + (vector.length * math.sin(vector.angle))))
+                          pos[1] + (vector.length * math.sin(vector.angle))))
         body.angle = vector.angle
         self.shape = pymunk.Circle(body, 30)
         self.shape.sensor = True
@@ -522,6 +522,7 @@
     zorder = ZORDER_FLOOR
     damage = None
     tile = None
+    tile_alpha = 255
     # How often to hit the player
     rate = 5
 
@@ -537,7 +538,8 @@
         super(HostileTerrain, self).__init__(
             SingleShapePhysicser(space, self.shape),
             render.TiledRenderer(outline,
-                                 resources.get_image('tiles', self.tile)))
+                                 resources.get_image('tiles', self.tile),
+                                 self.tile_alpha))
 
     def collide_with_protagonist(self, protagonist):
         # We're called every frame we're colliding, so
@@ -567,6 +569,8 @@
 class ForceWolfFloor(HostileTerrain):
     tile = 'moonlight.png'
     rate = 0
+    tile_alpha = 150
+    zorder = ZORDER_HIGH
 
     def apply_effect(self, protagonist):
         protagonist.force_wolf_form()
--- a/nagslang/render.py	Fri Sep 06 20:10:46 2013 +0200
+++ b/nagslang/render.py	Fri Sep 06 20:12:07 2013 +0200
@@ -193,11 +193,12 @@
 
        Outline is assumed to be in pymunk coordinates"""
 
-    def __init__(self, outline, tile_image):
+    def __init__(self, outline, tile_image, alpha=255):
         self._tile_image = tile_image
         self.outline = outline
         self._tiled = None
         self._offset = None
+        self._alpha = alpha
 
     def _make_surface(self, surface):
         if not self._tiled:
@@ -206,7 +207,9 @@
             mask.fill(pygame.color.Color(0, 0, 0, 0))
             pointlist = [pymunk.pygame_util.to_pygame(p, surface)
                          for p in self.outline]
-            rect = pygame.draw.polygon(mask, pygame.color.THECOLORS['white'],
+            rect = pygame.draw.polygon(mask,
+                                       pygame.color.Color(
+                                           255, 255, 255, self._alpha),
                                        pointlist, 0)
             self._offset = (rect.x, rect.y)
             self._tiled = tile_surface((rect.w, rect.h), self._tile_image)
--- a/nagslang/utils.py	Fri Sep 06 20:10:46 2013 +0200
+++ b/nagslang/utils.py	Fri Sep 06 20:12:07 2013 +0200
@@ -28,10 +28,10 @@
     return vec
 
 
-def tile_surface(size, tile_image):
+def tile_surface(size, tile_image, alpha=255):
     # create a surface, approriately tiled
     surface = pygame.surface.Surface(size, pgl.SRCALPHA)
-    surface.fill(pygame.color.THECOLORS['black'])
+    surface.fill(pygame.color.Color(0, 0, 0, alpha))
     x_step = tile_image.get_rect().width
     y_step = tile_image.get_rect().height
     x_count = size[0] // x_step + 1