Use an absolute directory under /usr/share/games/ for game data
[kraptor.git] / src / rvideo.c
blobcbd4b7dad31ae376964ce39503cb923bb94a1473
1 // ----------------------------------------------------------------
2 // rvideo.c
3 // ----------------------------------------------------------------
4 // Produce un video de un juego a archivos bmp sueltos
5 // Ideal para generar un video promocional de un juego
6 // Por Kronoman
7 // Copyrigth Enero 2003, Kronoman
8 // En memoria de mi querido padre
9 // ----------------------------------------------------------------
10 // Para que esto funcione, debe ser llamado en cada actualizacion
11 // logica del juego, de esa manera mantiene los fps constantes
12 // ----------------------------------------------------------------
15 #include <allegro.h>
16 #include <stdio.h>
17 #include "rvideo.h"
19 // Globales de configuracion
20 char rvideo_filen[1024]; // prefijo del video, setear a algo antes de empezar!
21 int rvideo_cadafsave = 10; // cada cuantas llamadas salvar el frame (1 =todas, 2 = la mitad, etc)
22 int rvideo_step = 0; // frame actual del step antes de salvar el frame (cuando esto = rvideo_cadafsave, salva el frame)
23 int rvideo_f_actual = 0; // frame actual de grabacion
24 int rvideo_is_recording = FALSE; // estoy grabando? (permite hacer pausas, etc)
25 int rvideo_resize = TRUE; // reacomodar el tama~o de salida? SI/NO
26 int rvideo_w = 320, rvideo_h = 200;
28 // Funcion de inicializacion, solo por seguridad... :)
29 void init_rvideo()
31 rvideo_cadafsave = 10; // default 1/10 de los fps logicos del juego
32 rvideo_step = 0;
33 rvideo_f_actual = 1; // empezo a grabar de 0001
34 sprintf(rvideo_filen, "rvideo"); // prefijo default
35 rvideo_is_recording = FALSE;
36 rvideo_resize = TRUE;
37 rvideo_w = 320;
38 rvideo_h = 200;
41 // Funcion de grabacion, llamar en las actualizaciones logicas del juego
42 // pasarle el bitmap que contiene la imagen, y la paleta
43 void rvideo_record(BITMAP *bmp, RGB *pal)
45 char filename[2048]; // archivo a salvar
46 BITMAP *tmp = NULL;
48 if (!rvideo_is_recording) return; // no estamos grabando
49 rvideo_step++;
50 if (rvideo_step < rvideo_cadafsave) return; // todavia no salvar
52 sprintf(filename, "%s%04d.bmp", rvideo_filen, rvideo_f_actual);
54 rvideo_f_actual++;
55 // salvar frame
56 if (rvideo_resize && rvideo_w != bmp->w && rvideo_h != bmp->h)
58 // el frame debe ser reajustado en tama~o
59 tmp = create_bitmap(rvideo_w, rvideo_h);
60 if (tmp == NULL) return;
62 stretch_blit(bmp, tmp, 0, 0, bmp->w, bmp->h, 0, 0, tmp->w, tmp->h);
63 save_bmp(filename, tmp, pal); // salvar
65 if (tmp != NULL) destroy_bitmap(tmp);
67 else
69 // frame 'tal cual'
70 save_bmp(filename, bmp, pal); // salvar
73 rvideo_step = 0;