1 Engine de cinematicas mediante scripting y bitmaps y animaciones
\r
3 En memoria de mi querido padre
\r
4 Copyright (c) Septiembre de 2002
\r
5 ---------------------------------------------------------------------
\r
8 El texto del script es leido desde un campo ->dat de un objeto
\r
10 Se lee como una cadena de chars, donde cada linea termina con un
\r
11 caracter 10 (LF, guarda compatibilidad con archivos de Linux!)
\r
12 Se va interpretando linea a linea.
\r
13 Por cada linea obtenida, se separa en parametros, y luego, el 1er parametro
\r
14 es tomado y se llama a la funcion que lo interpreta.
\r
15 Para listar las funciones se tiene una estructura con la instruccion (char)
\r
16 y el puntero a la funcion que la interpreta.
\r
17 Se busca en esta lista la instruccion ingresada.
\r
18 La funcion devuelve 0 si OK, -1 en falla.
\r
19 La funcion no recibe parametros. Los parametros de la linea estan
\r
20 almacenados en matrices globales.
\r
21 Son 3 matrices globales que contienen diferentes interpretaciones
\r
23 1) Parametros interpretados como enteros int
\r
24 2) Parametros interpretados como strings de char
\r
25 3) Todo lo que quedo despues de la primera instruccion (linea completa
\r
26 sin 1era instruccion)
\r
27 Ademas, cada matriz contiene la cantidad de parametros interpretados,
\r
28 para poder comprobar si el usuario se olvido algun parametro.
\r
29 ---------------------------------------------------------------------
\r
32 Las animaciones son archivos FLIC (fli/flc), y el texto subtitulado
\r
33 sincronizado va en un objeto aparte sincronizado con los frames del FLIC
\r
34 Las imagenes fijas son bitmaps
\r
35 Los sonidos son samples
\r
36 La musica es MOD (para DUMB)
\r
37 La musica por AHORA NO ESTA IMPLEMENTADA, POR COMPLICACIONES CON EL
\r
38 poll que precisa la musica en DUMB!!!
\r
39 ---------------------------------------------------------------------
\r
42 El engine dibuja a un bitmap de buffer de 640x480, donde luego
\r
43 es enviado a pantalla cuando esta listo [ajustando la proporcion
\r
44 a la resolucion de pantalla].
\r
45 ---------------------------------------------------------------------
\r
48 TODAS LAS INSTRUCCIONES Y PARAMETROS DEBEN IR SEPARADOS POR UN (1) ESPACIO!
\r
49 EL ENGINE ES SENSIBLE A MAYUSCULAS/MINUSCULAS
\r
50 Todo lo que comienze con # es comentario y esa linea es IGNORADA.
\r
51 Las instrucciones son del tipo
\r
52 [instruccion] [parametro] [parametro] [etc]
\r
53 NOTAR el espacio entre [parametro] y [parametro], etc...
\r
54 ---------------------------------------------------------------------
\r
55 Juego de instrucciones para el script principal:
\r
56 El script principal indica la secuencia de eventos que deben producirse,
\r
57 es decir, que animaciones reproducir, que sonidos tocar, etc.
\r
58 NOTAR que los parametros NO son opcionales, olvidarselos puede ocurrir
\r
59 en resultados IMPREDECIBLES! (no hay comprobacion de errores...)
\r
62 Toda linea que comienze con # es IGNORADA (se considera un comentario)
\r
66 Limpia la pantalla a color [r] [g] [b] (color RGB 0..255 c/u)
\r
69 fade_out [velocidad]
\r
70 Realiza una transicion a color negro
\r
71 [velocidad] 1..64 (lento-rapido)
\r
74 fade_out_color [r] [g] [b] [velocidad]
\r
75 Realiza una transicion al color [r] [g] [b]
\r
76 [velocidad] 1..64 (lento-rapido)
\r
79 rect [x] [y] [x2] [y2] [r] [g] [b]
\r
80 Dibuja un rectangulo desde [x] [y] a [x2] [y2]
\r
81 [r] [g] [b] es el color, en valores RGB 0..255
\r
84 rectfill [x] [y] [x2] [y2] [r] [g] [b]
\r
85 Dibuja un rectangulo LLENO desde [x] [y] a [x2] [y2]
\r
86 [r] [g] [b] es el color, en valores RGB 0..255
\r
89 line [x] [y] [x2] [y2] [r] [g] [b]
\r
90 Dibuja una linea desde [x] [y] a [x2] [y2]
\r
91 [r] [g] [b] es el color, en valores RGB 0..255
\r
95 Posiciona la salida de texto en [x] [y] con ancho [w]
\r
96 Setea el borde [w] como 'filo' o 'borde' para las salidas de texto (echo)
\r
97 Al llegar el texto a esa posicion, hace word-wrap
\r
100 text_color [r] [g] [b]
\r
101 Setea el color del texto a colocar en futuras llamadas
\r
102 [r] [g] [b] es el color, en valores RGB 0..255
\r
105 text_back [r] [g] [b]
\r
106 Setea el color del FONDO del texto a colocar en futuras llamadas
\r
107 [r] [g] [b] es el color, en valores RGB 0..255
\r
108 Si algun [r] [g] [b] es < 0 (ej: -1) el fondo del texto es transparente
\r
112 Cambia la fuente de las salidas de echo; si no se pone [font],
\r
113 se volvera al font original de la BIOS.
\r
114 [font] debe ser un objeto de tipo 'font' contenido en el archivo
\r
119 Escribe el [texto] en pantalla, con word-wrap al borde seteado
\r
120 Desplaza la coordenada [y] hacia abajo y [x] al origen anterior (salto de linea)
\r
123 echo_centre_x [texto]
\r
124 Escribe el [texto] centrado en [x] en pantalla, con word-wrap al borde seteado
\r
125 Desplaza la coordenada [y] hacia abajo y [x] al origen anterior (salto de linea)
\r
128 echo_centre_xy [texto]
\r
129 Escribe el [texto] centrado en [x] e [y] en pantalla, con word-wrap al borde seteado
\r
130 Desplaza la coordenada [y] hacia abajo y [x] al origen anterior (salto de linea)
\r
133 rest [milisegundos]
\r
134 Espera [milisegundos] antes de continuar la interpretacion...
\r
135 Si [milisegundos] <= 0, espera por una tecla...
\r
138 set_palette [paleta_256_colores]
\r
139 Setea la paleta de colores actual al objeto PALETA [paleta_256_colores]
\r
140 Esto es lento, porque ademas, calcula la tabla RGB para la paleta
\r
143 set_palette_default
\r
144 Setea la paleta default de la placa VGA
\r
147 blit [x] [y] [bitmap]
\r
148 Coloca el [bitmap] en [x] [y]
\r
151 sprite [x] [y] [sprite]
\r
152 Coloca el [sprite] en [x] [y] filtrando el color de mascara
\r
155 stretch_blit [x] [y] [w] [h] [bitmap]
\r
156 Coloca el [bitmap] en [x] [y] estirandolo a ancho [w] y alto [h]
\r
159 play_sample [sample] [vol] [pan] [freq]
\r
160 Lanza un sonido con el volumen, paneo y frecuencia.
\r
161 El volumen y paneo van desde 0 (min/izq) hasta 255 (max/derecho),
\r
162 127 es la mitad del parlante.
\r
163 Frecuencia es relativa mas que absoluta: 1000 representa la frecuencia a la que
\r
164 el sonido fue grabado, 2000 es el doble, 3000 el triple, 500 la mitad, etc
\r
167 clear_fli_back [r] [g] [b]
\r
168 Esto es una 'bandera' que permite que cuando se ejecute un FLI,
\r
169 antes de mostrar el primero cuadro, se limpie a color [r] [g] [b]
\r
170 Coloque [r] [g] [b] = -1 para que no se limpie la pantalla
\r
171 El default es limpiar a negro...
\r
174 keyboard_cancel_fli [valor]
\r
175 Esto permite que el usuario cancele una animacion fli al apretar una tecla
\r
176 El default es 0 [NO]
\r
177 Cualquier valor <> que 0, indica que si. (Usar -1 por las dudas)
\r
180 play_fli [x] [y] [w] [h] [loop] [objeto_fli] [script_fli]
\r
181 Ejecuta una animacion FLI contenida en el DAT.
\r
182 NOTA: esto modifica la paleta de colores! si hubiera algo dibujado, podria
\r
183 verse raro, e incluso, el fondo puede cambiar si el flag clear_fli_back no esta seteado
\r
184 [x] [y] son las coordenadas de la esquina superior izquierda
\r
185 donde deben ponerse los cuadros.
\r
186 [w] [h] es el ancho y alto del fli (se estirara!)
\r
187 [loop] Indica la cantidad de veces que deben repetirse los cuadros.
\r
188 *NOTA* Al llegar al final, el script cuenta de nuevo desde el primer frame
\r
189 por lo tanto, el [script_fli] comienza de nuevo.
\r
190 [objeto_fli] Indica el objeto de tipo FLI a reproducir, contenido en el DAT.
\r
191 [script_fli] Indica el script (objeto de tipo TXT) que contiene el sonido,
\r
192 subtitulos, etc del FLI.
\r
193 Ver mas adelante la documentacion para saber como es el formato.
\r
195 ---------------------------------------------------------------------
\r
196 Formato del [scrip_fli] para el comando "play_fli"
\r
198 Es un objeto de texto tipo TXT que indica los sonidos, y subtitulos frame x frame
\r
199 [NOTA DEBUG: los subtitulos NO estan implementados todavia]
\r
200 NOTA: los frames se comienzan contando desde 1
\r