Buenas, este post va dedicado principalmente a los que estan comenzando a programar con las palib teniendo ademas pocos conocimientos sobre programación. Los que ya lleven su tiempo pueden irse a otra parte
.
Bien, quería mostraros una función que hice pensando precisamente en facilitaros un poco las cosas, sobre todo a los que esteis haciendo algo tipo rpg, como judelco y su zelda
, ya que esto os pueden venir muy bien.
La función lo que hace es mostrar un mensaje de texto en una zona determinada de la pantalla.
...
No, no me apedreeis aun, que eso no es todo xD.
Esta funcion utiliza a su vez la funcion PA_TextBox para mostrar mensajes de texto que van apareciendo a la velocidad que queramos, en la parte de la pantalla(s) que queramos y algunos alicientes mas.
He intentado hacerla de la forma mas general posible, para ajustarla como querais, pero esto me ha obligado a contar con muchos parametros a la hora de llamarla. Por ello, la analizaré un poco para que no os tengais que comer el coco a la hora de usarla:
func_msgtexto(u8 pantalla, u8 posicion, s8 color, char *texto, bool modoborrado, float velocidad, float acelerar, bool modo_ace)
Si... unos cuantos parametros nada mas... os dire que teneis que insertar en cada uno:
func_msgtexto(u8
pantalla, <- aqui obviamente teneis que insertar la pantalla donde aparecera el cuadro de texto
u8
posicion, <- aqui su posicion. podeis usar una de las 3 predefinidas: POS_ARRIBA, POS_CENTRO ó POS_ABAJO. tambien podeis poner un valor que sera la coordenada y. no hay que especificar el ancho, puesto que este será toda la pantalla
s8
color, <- aqui el color del texto del mensaje. si poneis -1 no pondrá ningun color, es decir, usara el ultimo que hayais cambiado.
char *
texto, <- aqui el texto a pintar, entre comillas "lo que sea". esta funcion no pintara variables. la cantidad maxima de caracteres es de 155 (5 lineas a 31 caracteres cada una)
bool
modoborrado, <- aqui se pone la forma que tendra la pantalla de ser borrada una vez leido el texto. si poneis 0 se borrara solo la parte correspondiente al texto que ha escrito la funcion. si poneis 1, ejecutara un PA_ClearTextBg, por lo que si teneis mas texto en pantalla recomiendo usar la opcion 0. en vez de 0 y 1 podeis usar BORRA_TEXTO y BORRA_TODO.
float
velocidad, <- aqui va la velocidad con la que ira apareciendo el texto. el numero indicado sera el tiempo que pasará entre letra y letra, por lo que es aconsejable poner valores inferiores a 1. si poneis 0 el texto sera instantaneo
float
acelerar, <- aqui teneis una opcion que espero que os guste. se usa en conjunto con la siguiente, e indica una cantidad de tiempo a restarle a la velocidad. por ejemplo, si en velocidad poneis 1 y en acelerar 0.8, cuando se active la aceleracion entre letra y letra no pasara 1 segundo sino 0.2 (1-0.8). bueno, y como se usa esto? pues...
bool
modo_ace) <- en este parametro elegimos el modo de acelerar el texto. teneis dos opciones, MODO_NEWPRESS y MODO_HELD. bien, si seleccionais MODO_NEWPRESS y la aceleracion tiene un valo mayor que 0, si pulsais A mientras leeis el texto su velocidad aumentara de la forma que expliqué antes, hasta llegar al final del cuadro de texto. si en acelerar poneis de valor 0, no habra aceleracion. si poneis un valor similar al de velocidad, el texto aparecera instantaneamente al pulsar A. si poneis el MODO_HELD, el texto se vera acelerado de la misma forma, pero no automaticamente hasta llegar al final, sino solo mientras mantengais pulsado el boton A. creo que esto viene muy bien para esos largos dialogos que quiza haya que leer varias veces
Creo que la explicacion me ha salido un poco warra, si eso luego lo defino mejor todo xD.
Pues como dije, la funcion la he hecho de forma muy general, de ahi que tenga tantas opciones. Si en tu juego no quieres que el texto se acelere al pulsar el boton (o que lo haga de una sola forma) lo mejor es hacerte una funcion que haga solo eso y no tengas que andar configurandola (esto entre otras cosas).
-No puede especificarse un boton para ir avanzando en el texto, asi que segun la que querais tendreis que editarla antes de incluirla en vuestro juego.
-Tampoco se puede especificar un fondo para el cuadro de texto ni un sprite con un botoncito que indique lo pulses para seguir leyendo. Esto deberá correr de vuestra cuenta.
-Se me olvidaba esto, antes de usarla debeis inicializar texto (PA_InitText) en la pantalla que querais que aparezca el mensaje.
Espero que os venga bien a alguno y, al menos, os hagais una idea de como hacer estas cosillas.
Si teneis alguna duda sobre esto no teneis mas que preguntas. Si veis algun tipo de fallo haced el favor de comunicarmelo
.
Pues nada, un saludo a todos, me voy al dentista xD!