problemas con dsFont

Hola,
Estoy creando una fuente de mida de tile 16x16, xo el problema es q luego al importarla en el codigo me lo coje de 8x8.
Alguna solucion?¿
Podria alguien darme alguna solucion porfavor ;)
Pregunta por plata o antonioD :D
Rigle escribió:Pregunta por plata o antonioD :D

AntonioND, por favor. [chulito]

No se exactamente a qué te refieres, pero creo que es esto. Conviertes la fuente con el PAgfx y la incluyes en el juego, pero no sabes como hacer que se vea, ¿no?

Hay 2 opciones, con un bg de 8 bits o uno de 16 colores.

En el caso de 8 bit primero tienes que iniciar un bg a 8 bit, luego cargar la fuente y listo:
PA_Init8bitBg (pantalla, prioridad); //por ejemplo, (0,0)
PA_8bitCustomFont(5,nombrefuente); //Las fuentes del 0 al 4 están fijadas por PAlib, pero las puedes reemplazar

//Luego, para escribir...

PA_SmartText (u8 screen, s16 basex, s16 basey, s16 maxx, s16 maxy, char *text, u8 color, u8 size, u8 transp, s32 limit); //blablabla... hay ejemplos de esto en la carpeta de ejemplos de PAlib.



En el caso de 16c es parecido:
PA_Init16cBg (u8 screen, u8 bg);
PA_16cCustomFont(c16_slot, c16_font);

PA_16cText (u8 screen, s16 basex, s16 basey, s16 maxx, s16 maxy, char *text, u8 color, u8 size, s32 limit); //etc...



No lo he probado, ni he cargado mis propias fuentes de este tipo... Pero supongo que eso debería funcionar... Lo mas que he hecho es usar las fuentes de 8 bit que vienen con PAlib.
Sorry, esk mi "n" no funcionó bien [+risas]
Gracias AntonioND.
Ya me funciona con smartText, yo lo hacia diferente...
El problema que veo del smartText es el siguiente(no se si es pq lo he hecho mal):

Cargo una fuente pero el color de la fuente no es el que yo he creado, la grandaria y el estilo se ben bien, xo el color degradado d las letras no, será pq el smartText me pide u8 color¿?¿?¿?

Luego tengo otra duda sobre smarText:
Tengo un array de chars:
char letters[67];
strcpy(letters," ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 .:\0");

Esto me servira para guardar las letras para crear un teclado.
Luego tengo una funcion que crea el teclado:
///////////////////MOSTRAR CUADRICULA
   x=40;
   y=80;
   for(int j=0;j<5;j++){
      for(int i=0;i<13;i++){
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y,x+14,y,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y,x,y+14,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y+14,x+14,y+14,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x+14,y,x+14,y+14,1);
         PA_CenterSmartText(BOTTOM_SCREEN,x-1, y+1, x+15, y+15,"Z",1,6,1);
         x=x+14;   
      }
      x=40;
      y=y+14;
   }

Esta funcion monta una cuadricula de 4 filas i 12 columnas, y en cada cuadricula tengo puesto "Z"...
Z pq??¿?¿ pues pq no tengo ni idea de como asignarle el valor letters[i]!!!!!! no me funciona!! no se ven las letras en la pantalla!!!
He provado asi:
PA_CenterSmartText(BOTTOM_SCREEN,x-1, y+1, x+15, y+15,(char*)letters[i],1,6,1);

xo no me funciona :(

Alguien puede ayudarme porfavor?
Gracias.
mira, no es q sea el q mas entiende del mundo pero creo que:
si te funciona con la letra "Z", deberia funcionarte con la letters[i]. sin hacer el cambio de tipo de variable ni nada, ya que realmente esto indica el valor del array(en este caso los caracteres).
resumen, cambia (*char)letters[i] por letters[i]

una cosa, ten cuidado que me he fijado que en el strcpy tenes un espacio en blanco al principio de los caracteres.
SPEC|AL escribió:Cargo una fuente pero el color de la fuente no es el que yo he creado, la grandaria y el estilo se ben bien, xo el color degradado d las letras no, será pq el smartText me pide u8 color¿?¿?¿?


Eso es porque pide un color de la paleta de 256 colores posibles. Para eso:
PA_SetBgPalCol(pantalla, numero_de_color, PA_RGB(red, green, blue));

Luego el color que tienes que usar en Smart Text es numero_de_color.

SPEC|AL escribió:
PA_CenterSmartText(BOTTOM_SCREEN,x-1, y+1, x+15, y+15,(char*)letters[i],1,6,1);


Prueba a aumentar a x+16, y+16, puede que sea eso.
me sigue sin funcionar, el smartText lo q coje es un puntero, y yo tengo letters[i](vale tambien es un puntero desde la posicion 0), si pongo letters[i] me da error de compilacion...
si pongo (char*)letters[i] me compila xo no se me ve en pantalla...
ummmmm, curioso.
hombre en c para saber la direccion de memoria donde esta ubicada una variable se hace mediante el caracter &
asi q... prueba a poner &letters[i]
vamos, por probar. en el caso de que esto no funcione no se me ocurre otra cosa. por ahora

¿y si pones una posicion de letters especifica? (letters[0], por ejemplo) te funciona?
tb probe con el operador & y nada :(
no se q coño puede pasar...
Poniendo i=2 por ejemplo tmpoco funciona

es mas!!!! tampoco puedo concatenar cadenas!!!
   for(int i=0;i<5;i++){
   
      PA_CenterSmartText(BOTTOM_SCREEN,0, 60+16*i, 255, 60,i + players[i]->getName(),1,6,1);
      PA_WaitForVBL();
   }
si le interesa a alguien, lo he solucionado de la siguiente forma:
strcpy(letters," ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 .:\0");
x=38;
   y=80;
   for(int j=0;j<5;j++){
      for(int i=0;i<13;i++){
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y,x+14,y,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y,x,y+14,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x,y+14,x+14,y+14,1);
         PA_Draw8bitLine(BOTTOM_SCREEN,x+14,y,x+14,y+14,1);
         char myChar[1];
         sprintf(myChar, "%c",letters[i+(j*13)+1]);
         PA_CenterSmartText(BOTTOM_SCREEN,x-1, y+1, x+15, y+15,myChar,1,6,1);
         x=x+14;
         
      }
      x=38;
      y=y+14;
   }


el resultado es este:
Imagen
Si os fijais la letra es de color negro, no se pq pero el smartText no me pilla el color de fuente que he creado con dsFont.
¿Alguna idea?
Tb me falta poner una tecla para borrar.
11 respuestas