Kamilche wrote:
Try the following code. It uses a gradient light.

I'm trying to figure out how your example (much better than mine) works. It looks like the key is the last line of this function:

def RefreshNight(night, alpha, light, x, y):
    a = NIGHTCOLOR[3]
    alpha.fill([a, a, a])
    r = LIGHTSIZE/2
    alpha.blit(light, [x-r, y-r])
pygame.surfarray.pixels_alpha(night)[:, :] = pygame.surfarray.pixels2d(alpha)

So, to get around the problem of a pre-drawn lightmask not getting properly put onto the dark mask, you're using the surfarray module to address the alpha channel of the dark mask directly? Is that how this works? I don't recognize the [:,:] syntax -- a list containing two copies of a list, maybe.

I tried using a version of that line instead of directly blitting my lightmask onto dark, but Python complained that it couldn't safely cast the array. I guess there's some trick to how the surfaces are defined, but I haven't been able to figure it out yet.

Kris

Reply via email to