1 // --------------------------------------------------------
3 // --------------------------------------------------------
4 // Copyright (c) Kronoman
5 // En memoria de mi querido padre
6 // --------------------------------------------------------
7 // Genera las sombras del juego y dibuja sombras en pantalla tambien.
8 // Bastante simple. :^P
9 // Lo afecta el nivel de detalle.
10 // --------------------------------------------------------
19 /* Genera una sombra del origen en destino
20 origen y destino son dos bitmaps, PREVIAMENTE alocados
21 destino sera borrado a negro 0, y luego, se dibuja la sombra con gris de 32 RGB
22 TENER LA PALETA CARGADA, O LOS COLORES VAN A SALIR MAL
23 LA SOMBRA ES ESCALADA AL TAMA~O DE DESTINO!
25 void hacer_sombra(BITMAP
*origen
, BITMAP
*destino
)
30 tmp
= create_bitmap(origen
->w
, origen
->h
);
31 if (tmp
== NULL
) return; /* fallo! */
33 clear_bitmap(destino
);
36 c
= makecol(32,32,32); /* color de sombra */
38 solid_mode(); /* dibujar solido... */
40 for (x
=0; x
< origen
->w
; x
++)
41 for (y
=0; y
< origen
->h
; y
++)
42 if (getpixel(origen
, x
, y
) > 0 ) putpixel(tmp
, x
, y
, c
);
44 stretch_blit(tmp
, destino
, 0, 0, tmp
->w
, tmp
->h
, 0, 0, destino
->w
, destino
->h
);
50 /* Coloca la sombra de un jugador/enemigo
52 NOTA: codigo original era
53 alterando la posicion de la sombra de acuerdo a la posicion del enemigo
54 en una pantalla de 600x480
56 Actualmente (16/12/03) la sombra se dibuja hacia la izquierda abajo, para
57 concordar con el foco de luz que le da sombra a los edificios
59 void colocar_sombra(BITMAP
*bmp
, BITMAP
*sombra
, int px
, int py
)
61 /* if (nivel_detalle > 5) draw_trans_sprite(bmp, sombra, px+(300-px)/8, py+(400-py)/10); */
62 if (nivel_detalle
> 5) draw_trans_sprite(bmp
, sombra
, px
-(sombra
->w
*0.15)-10, py
+(sombra
->h
*0.15)+10);