# HG changeset patch # User Neil Muller # Date 1378491127 -7200 # Node ID d0aeb893967d44e65a070ed587e3362e61958cff # Parent 534eac55a178257519581736800fc12f3e8a6b28 Transparent moonlight diff -r 534eac55a178 -r d0aeb893967d nagslang/game_object.py --- 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() diff -r 534eac55a178 -r d0aeb893967d nagslang/render.py --- 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) diff -r 534eac55a178 -r d0aeb893967d nagslang/utils.py --- 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