Módulo barra.h 2.0 para InformatE 6/7E o 6/10E (original) adpatado a INFSP by sarganar (C) 2001 Presi (Enrique D. Bosch) [kifcu@confluencia.net] Puede distribuirse libremente bajo licencia GNU LGPL TUTORIAL RÁPIDO --------------- El módulo es biplataforma, asi que puede compilar tanto para Z como para Glulx. Implementa lo necesario para crear barras de estado (lineas de estado en argot Inform) potentes de manera sencilla. Primero que nada, hay que saber que existen dos modos de funcionamiento: modo simple y modo compuesto. * Modo simple ------------- Permite crear barras de estado con un solo item (elemento), para crear una barra que ponga el texto "Mi aventura", hay que hacer las siguientes declaraciones: replace DrawStatusLine; include "Parser"; ! estos son los includes habituales de la include "Verblib"; ! libreria Inform que deben estar entre ! el replace y el include "barra" include "barra"; ! debes poner ">barra.h" si trabajas con la extension en el ! mismo directorio que tu juego objeto_barra_estado barra_estado with texto "Mi aventura"; [ DrawStatusLine; barra_estado.dibujar(); ]; asi de fácil ya tendríamos una barra de estado (en modo invertido en Z), que muestra el texto "Mi aventura" justificado a la izquierda, que son las opciones por defecto, pero si quisieramos incluir un elemento que no fuera un texto fijo, por ejemplo el nombre de localidad en la que se esté en cada momento y centrada sustuimos la declaración de objeto_barra_estado por la siguiente: objeto_barra_estado barra_estado with item BE_LOCALIDAD, alineacion BE_CENTRO, longitud 10; la propiedad alineacion es por defecto BE_IZQUIERDA, puede ser también BE_CENTRO y BE_DERECHA, con estos dos últimos valores es necesario especificar "a mano" la longitud aproximada del texto con la propiedad "longitud" los items disponibles son los siguientes: BE_TEXTO texto de usuario en la propiedad "texto" (si no se especifica item este será usado por defecto) BE_LOCALIDAD nombre de la localidad actual BE_AVENTURA nombre de la aventura (constante historia) BE_HORA_24 hora en formato 24h con el texto "Hora:" delante BE_SOLO_HORA_24 hora en formato 24h BE_HORA_AMPM hora en formato AM/PM con el texto "Hora:" delante BE_SOLO_HORA_AMPM hora en formato AM/PM BE_TURNOS número de turnos empleados (movimientos) con el texto "Movim.:" delante BE_SOLO_TURNOS número de turnos empleados (movimientos) BE_PUNTUACION puntuación actual con el texto "Punt.:" delante BE_SOLO_PUNTUACION puntuación actual BE_SALIDAS puntos cardinales que son salidas visibles con el texto "Salidas:" delante BE_SOLO_SALIDAS puntos cardinales que son salidas visibles Nota 1: La propiedad texto puede contener una rutina. Nota 2: Para el uso de la hora (tato en formato 24h como en AM/PM) debe estar incluido el módulo hora24.h, si no está incluido, barra.h compilará y funcionará correctamente excepto que ignorará las opciones de hora. Nota 3: Para el uso de las salidas o la brújula (ver BE_BRUJULA en el modo compuesto) debe estar definida la constante ADMITIR_COMANDO_SALIDAS de INFSP Para otras opciones como multilínea o texto invertido ver el manual (fichero manual.txt). * Modo compuesto ---------------- Permite crear una barra de estado con múltiples items, definiendo en que posición debe ir cada elemento; por ejemplo, imaginemos que queremos una barra que en el extremo izquierdo ponga el nombre de la aventura, más o menos a mitad de barra el texto de usuario "XYZZY" y más a la derecha los turnos empleados (movimientos) y la hora en formato 24h, la declaración completa sería: replace DrawStatusLine; Include "Parser"; ! includes habituales de la librería Include "Verblib"; ! Inform Include "hora24"; Include "barra"; objeto_barra_estado barra_estado with modo BE_COMPUESTO, disposicion 1 1 true BE_AVENTURA 40 1 true BE_TEXTO 50 1 true BE_TURNOS 61 1 true BE_HORA_24, texto "XYZZY"; [ DrawStatusLine; barra_estado.dibujar(); ]; La propiedad "modo" puesta al valor "BE_COMPUESTO" indica que debe utilizarse el modo compuesto. En el simple no hace falta ponerlo porque es por defecto, pero la clave está en la propiedad disposición que es la que define donde va cada elemento, cada línea de disposición se divide en cuatro parámetros que conforman un elemento de la barra, notar que todos los datos forman parte de la propiedad disposición y que no hay comas entre una línea y la siguiente, solo al final de la propiedad. Explicaremos ahora parámetro por parámetro qué es cada cosa: 1 1 true BE_AVENTURA 40 1 true BE_TEXTO 50 1 true BE_TURNOS 61 1 true BE_HORA_24, ^^ El primer parámetro es la posición horizontal del elemento en la línea expresado en tanto por 80, si el ancho real de pantalla (o ventana) es de 80 caracteres entonces equivale exactamente a la posición en caracteres, si no, el módulo calcula el equivalente proporcional al ancho real, en este caso 1 es el primer carácter, o sea, todo a la izquierda y en los demás 40 es la mitad y 50 y 61 más a la derecha. Notar que 40 simempre equivaldrá a la mitad y 80 al último (el de más a la derecha) carácter sea cual sea el ancho real. También puede ponerse el valor BE_JUNTO que significa que el item debe ir a continuación del anterior. 1 1 true BE_AVENTURA 40 1 true BE_TEXTO 50 1 true BE_TURNOS 61 1 true BE_HORA_24, ^ El segundo parámetro es la posición vertical, en nuestro caso todos son la primera línea ya que nuestra barra solo tiene una línea, podría ser más de 1 en caso de que la barra tuviera más de una línea, para obetener información sobre multilínea ver el manual (fichero manual.txt). 1 1 true BE_AVENTURA 40 1 true BE_TEXTO 50 1 true BE_TURNOS 61 1 true BE_HORA_24, ^^^^ El tercer parámetro indica si el elemento se visualiza en texto invertido (true) o no (false), en nuestro caso todo es invertido ya que la barra es invertida. Para obtener más información sobre barra y texto invertido ver el manual (fichero manual.txt). 1 1 true BE_AVENTURA 40 1 true BE_TEXTO 50 1 true BE_TURNOS 61 1 true BE_HORA_24, ^^^^^^^^^^ Y el cuatro y último parámetro indica qué elemento es el que queremos introducir, es la misma lista que en el modo simple, descrita arriba, excepto BE_BRUJULA que solo funciona en el modo compuesto: BE_BRUJULA dibuja una especie de brújula (en modo texto) que señala las salidas visibles, este item solo funciona en el modo compuesto y ocupa tres líneas de la barra a partir de la posición vertical especificada, asi que barra de estado debe tener las suficientes líneas para albergar la brújula BE_BRUJULA_BONITA Igual que BE_BRUJULA pero añadiéndole un marco y las inscripciones N, S, E y O. Si hay más de un item de texto (BE_TEXTO) entonces la rutina texto debe ser un switch, en donde se especifique el primer item de texto, el segundo, etc. asi: texto [ x; switch(x) { 1: "Primer texto"; 2: "Segundo texto"; 3: "Tercer texto"; } ]; Por último existen funciones para cambiar la barra en tiempo de ejecución, es decir durante el juego, para obtener información sobre ello ver el manual (fichero manual.txt). Se incluyen también tres ficheros en inform de ejemplo de uso de barra.h, el primero en modo simple, el segundo en modo compuesto, y el tercero de salidas y brújulas. Nota: si compilando da warnings sobre variables declaradas pero no usadas, no pasa nada, es completamente normal.