[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] Masking Test: Simulated Lighting (Follow-Up)
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