! escr.h
! Presenta un vector de cadenas en pantalla.
! Hace una pausa tras cada cadena.
! Visualiza cada cadena caracter a caracter.

System_file;

#ifndef  ESCR_LIB;
Constant ESCR_LIB;

Message "Compilando librerķa de escritura letra a letra. Baltasar, el arquero.";

Array escr_buffer_lib --> 1024;

#ifdef TARGET_GLULX;
Constant ESCR_PRIMERA_LETRA 4;
#endif;
#ifdef TARGET_ZCODE;
Constant ESCR_PRIMERA_LETRA 2;
#endif;

class escritura
class vector
private
    sonido 0,
    volumen 0,
with
    hazPausaLetra [;
        if ( self.PausaLetra > -1 ) {
            EsperarTecla(0, self.PausaLetra);
        }
    ],
    PausaLetra 1,
    PausaMensaje 15,
    visualiza [n p lon;
        escr_buffer_lib-->0 = 1022;

        ! Para cada cadena a visualizar
        for (n=0:n<self.longitud():n++)
        {
            ! Para cada una de las cadenas
            ! Convertirlas a vector
            lon = (self.elemento(n)).print_to_array(escr_buffer_lib);

            ! Visualizar las letras una a una
            for(p=ESCR_PRIMERA_LETRA:p < (lon + ESCR_PRIMERA_LETRA): p++) {
                print (char) escr_buffer_lib->p;
                
                #ifdef TARGET_GLULX;
                    ! Tocar un sonido, esperar a pulsar una tecla o que pase un tiempo
                    if ( self.sonido ~= 0 ) {
                        playSound( chan1, self.sonido, 1, self.volumen );
                        self.hazPausaLetra();
                    } else {
                        self.hazPausaLetra();
                    }
                #endif;
                #ifdef TARGET_ZCODE;
                    self.hazPausaLetra();
                #endif;
                    
            }
            print "^";
            
            EsperarTecla(0, self.PausaMensaje);
        }
    ]
;


#endif;
