Os presento una librería para programadores de LuaDev que les vendrá como anillo al dedo. Se trata de una nueva librería creada por uno de los moderadores de PSP, Rober Galarga. La librería sirve para hacer un print pero de una manera muy especial: imprimiendo imagenes que corresponden a cada caracter, es decir: asignas una imagen (de una letra en un tipo de fuente, icono, etc) y al hacer un print de dicho string, se blitea la imagen.
Autor: Rober Galarga.
PrintLib es una librería que nos permitirá imprimir mensajes en pantalla, con una fuente personalizada que será cargada como un sprite.
Nota del autor: "No pretendo sustituir el print nativo de LuaDEV, sólo quiero apoyarlo ;)".
Esos caracteres vienen cargados por default en PrintLib, así que lo más recomendable es seguir ese sprite, a manera de plantilla. El tamaño no importa, pueden tener un sprite de diferentes filas, columnas y tamaño que el del ejemplo, pero si siguen el orden indicado funcionará. El tamaño total DEBE ser de 512*512 pixeles máximo, de lo contrario obtendrán cosas raras al escribir.
Modo de uso:
Primero cargamos la librería, así como el sprite que usaremos como fuente:
dofile("PrintLib.lua")
fuente = image.loadsprite("la fuente.png",ancho,alto)
--[[
ancho,alto se refieren a las dimensiones de los caracteres en nuestro sprite
y obviamente dependen del tamaño que los hicimos.
En el ejemplo que dejé, los caracteres son de 10x15 pixeles
]]
Ahora, si necesitamos los servicios de la librería, usamos su función principal:
print(fuente,x,y,texto,separacion,visibilidad,escalado,color,modo_vertical)
Donde:
Nota: Para que el coloreado surta efecto, la fuente debe ser de color blanco.
Estoy seguro que al ver el sprite de ejemplo, se dieron cuenta de que podrían faltar caracteres (como por ejemplo los signos ¿,¡, o los caracteres que usan los españoles). No hay por qué alarmarse, ni entrar en pánico que se soluciona sencillo.
PrintLib incluye una función para añadir nuevos caracteres. La forma más sencilla de hacerlo, es añadiendo los caracteres que nos hagan falta al sprite, después de los que estaban ya en él.
Hecho eso, toca definir el nuevo caracter, usando la función char.add (disponible cuando cargamos la librería):
char.add(caracter,posicion)
Entonces, para añadir el símbolo ¿ después de la Ñ en el sprite de ejemplo, haríamos esto:
char.add("¿",102)
Cuidado con substituir caracteres ya definidos, podrían obtener una ensalada de letras xD
No necesariamente debemos usar el mapeo mostrado en el sprite de ejemplo, podemos definir nuestro propio mapa de caracteres.
Antes de eso, debemos limpiar el mapeo actual, usando otra función incluida en la librería:
char.clean()
Con eso preparamos la librería para definir el nuevo mapa de caracteres, restándonos la tarea de añadirlos como se explicó anteriormente. Esta función es especialmente útil si tenemos un sprite con pocos caracteres, resulta más práctico cargar sólo los que vamos a usar en determinado momento, con el subsecuente ahorro de RAM ;)
En caso de querer volver al mapeo por defecto, usamos:
char.reload()
Y podremos volver a usar sin problemas la plantilla de ejemplo.
char.setH(tabla,separacion) char.setV(tabla,separacion)
Donde:
setH y setV pueden ser llamadas en cualquier momento, cuantas veces lo deseemos (para modificar la separación si hiciera falta, por ejemplo), y su efecto es independiente (si definimos separación horizontal, no afectará cuando imprimamos verticalmente y viceversa).
Ejemplo de esta función:
setH({"I","í","i","l"}) --Defino separación diferente para los caracteres I,í,i,l. Como no especifiqué separación, se usará la mitad de la indicada en el print. print(small,10,10,"Iluminando el sendero",10) --Imprime con la mitad de la separación para los caracteres que indiqué. setH({"I","í","i","l"},7) --Defino 7 pixeles de separación para los caracteres I,í,i,l. print(small,10,10,"Iluminando el sendero",10) --Imprime con 7 pixeles de separación para los caracteres que indiqué
Agradezco a Moikop por su ayuda para subsanar un par de bugs, a Chimecho por las ideas para el coloreado, a DeViaNTe por crear LuaDEV y a Dovemac por las ideas en general.
*Captura de PrintLib en acción. Podéis observar la función de separación.
Descargar PrintLib vFinal (Sólo Usuarios Registrados).
Comentarios
Me viene de Lujo ;) Gracias
Me viene de Lujo ;)
Gracias por la libreria