lunes, 22 de octubre de 2007

Píxeles de SDL_Surface y eventos de sprite.

Al final era más fácil de lo que yo creía. Hay un ejemplo en la documentación de libSDL que explicaba perfectamente cómo hacerlo. Copiaré el código con muy pocos cambios. Así, la detección de sprites pinchados se queda de la siguiente manera:

1.- Crear propiedad privada del sprite que sea un SDL_Surface con tamaño igual al de la superficie de la pantalla y 8 bits de profundidad con flag SWSURFACE. Esta superficie será la máscara.
2.- Cuando se cree un frame del sprite, crear una copia del frame a 8 bits como "sombra", también con flag SWSURFACE
3.- cuando se pida un tick del sprite (actualización de animación y frame para hacer blitting a la pantalla), rellenar la superficie máscara de un color concreto (¿rosa? ¿verde fosforito? ¿azul puro?) y hacer blit de la sombra del frame actual sobre la superficie máscara.
4.- para saber si el ratón ha pinchado sobre nuestro sprite, sacamos el color del pixel donde está el ratón de la máscara. Si no es el color de fondo asignado, hemos pinchado en nuestro sprite y disparamos evento de usuario de SDL, que a su vez disparará una o varias acciones de la lista de acciones de la escena.

A ver si esta tarde o mañana lo programo.

3 comentarios:

RiVaS dijo...

Tengo que hablar contigo cesitar ... algo relacionado con el juego me puede valer para el proyecto de final de carrera ... puede que no, todo depende de como vayas a enfocar el modo de juego. Bien sabes que esto como mejor se habla es a la tenue luz de unos minis de mocho.

RiVaS dijo...

Y por cierto me refiero a algo a hacer por mi .. no a algo que hayas hecho ;) no tiene nada que ver con la parte grafica

idaho06 dijo...

Este finde me acerco :)