CAAD
http://foro.caad.es/

Duda sobre colores de texto
http://foro.caad.es/viewtopic.php?f=31&t=4528
Página 1 de 1

Autor:  jenesis [ 13 Ene 2011 09:45 ]
Asunto:  Duda sobre colores de texto

No he encontrado la manera de cambiar el color de solo una palabra del texto, y me gustaría también poder resaltarla en negrita.

Tampoco sé si se puede cambiar de color las descripciones metidas desde el campo de IDE, y no me refiero a todas las de un objeto, sino a unas sí y a otras no.

Autor:  Al-Khwarizmi [ 13 Ene 2011 10:57 ]
Asunto:  Re: Duda sobre colores de texto

En un texto normal que no sea un informAction, el tema de cambiar el color a un trozo ya lo cubrimos aquí: viewtopic.php?f=31&t=4140

Para resumir, se usa el método getColorCode(String) de la clase InputOutputClient para preguntarle al cliente qué código usa para mostrar un determinado estilo, y así se hace algo como esto:

jugador.write("Es muy " + jugador.getIO().getColorCode("important") + "importante" + jugador.getIO().getColorCode("default") + " ponerse el casco");

Eso te pondría la palabra importante en el estilo "important".

Si en lugar de mostrarlo en uno de los colores definidos en los estilos, quieres cablear colores en concreto (por ejemplo, el color HTML #447766), eso también se puede hacer para el cliente de ventanas de Swing; pero sin garantizar la portabilidad a otros clientes que no tienen por qué soportar colores HTML. Si necesitas hacer esto, pregunta y miraré cómo era.

Respecto a la negrita, no existe el concepto "negrita" en sí (bueno, en realidad tampoco existe el concepto de colores, existen estilos, pero eso es otra historia). Sin embargo, en el cliente de Swing (y sin garantizar la portabilidad) puedes conseguir negrita cambiando la fuente del área de texto a una fuente en negrita, con los métodos para cambiar fuentes que se explican en detalle en http://www.caad.es/aetheria/doc/doku.php?id=tipografia

Por ejemplo, poner una palabra en negrita creo que es así:

Código:
Font negrita = new Font("default", Font.BOLD, 12);
Font normal = new Font("default", Font.PLAIN, 12);
jugador.write("Aquí hay una palabra en ");
if ( jugador.getIO() instanceof ColoredSwingClient  )
  jugador.getIO().setCurrentOutputFont(negrita);
jugador.write(" negrita ");
if ( jugador.getIO() instanceof ColoredSwingClient  )
  jugador.getIO().setCurrentOutputFont(normal);
jugador.write(" pero el resto no lo están.\n");


También puedes incluir la fuente en un fichero y cargarla, esa página de la documentación te dice cómo hacerlo con o sin getResource(). Pero en ese caso es importante capturar las excepciones, porque incluso proporcionando el fichero siempre es posible que un determinado sistema o configuración donde ejecuten el AGE puede no ser compatible con una determinada versión de truetype, opentype u otro estándar para especificar fuentes, y por lo tanto no pueda abrirlo.

Sobre las descripciones que introduces en el IDE, estas descripciones aparecen en el estilo "description", y me temo que no hay forma de cambiar eso. Si quieres cambiarlo tendrás que capturar el verbo mirar. La idea básica de los estilos de AGE es que por defecto los textos aparezcan en un estilo distinto según su naturaleza: si son una descripción, el texto de una acción, un error, etc. Luego por supuesto esto se puede cambiar si a uno no le gusta; pero por código, no en el IDE.

Autor:  jenesis [ 13 Ene 2011 11:58 ]
Asunto:  Re: Duda sobre colores de texto

Font negrita = new Font(world.getResource("Courier_New.ttf"), Font.BOLD, 12);
Font normal = new Font(world.getResource("Courier_New.ttf"), Font.PLAIN, 12);



Syntax error in BeanShell code in object: [World: 15 meses, internal handle eu.irreality.age.World@1c344f6]
Loaded to call method intro
With arguments: [ eu.irreality.age.Player:20000001:el Guerrero ]
File: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pla . . . ''
Stack trace: Sourced file: inline evaluation of: ``intro( arg0);'' : Typed variable declaration : Constructor error: Can't find constructor: java.awt.Font( java.net.URL, int, int ) in class: java.awt.Font : at Line: 96 : in file: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pla . . . '' : new Font ( world .getResource ( "Courier_New.ttf" ) , Font .BOLD , 12 )

Autor:  Al-Khwarizmi [ 13 Ene 2011 12:04 ]
Asunto:  Re: Duda sobre colores de texto

Hum... no has mirado la documentación que te he puesto, ¿verdad? :D

Para hacerlo con getResource, es así:

Código:
client.setCurrentOutputFont(world.getResource("fuente.ttf"),16);


En el caso de la negrita, tendrás que buscar el fichero de la negrita (cada tipo de letra tiene un fichero .ttf). Por ejemplo, en mi máquina hay "Courier New Negrita.ttf".

Autor:  jenesis [ 13 Ene 2011 12:28 ]
Asunto:  Re: Duda sobre colores de texto

Al-Khwarizmi escribió:
Hum... no has mirado la documentación que te he puesto, ¿verdad? :D

Para hacerlo con getResource, es así:

Código:
client.setCurrentOutputFont(world.getResource("fuente.ttf"),16);


En el caso de la negrita, tendrás que buscar el fichero de la negrita (cada tipo de letra tiene un fichero .ttf). Por ejemplo, en mi máquina hay "Courier New Negrita.ttf".


Sí, la he mirado.
Pero primero lo he intentado con "default", pensando que AGE ya tiene sus fuentes por defecto, pero no ha funcionado, así que he ido a la doc, y ahí ponía lo de las fuentes. He cogido la letrita la he puesto en el raiz de la aventura y he añadido el world.getResource, sí que he pensado que igual tenía algún módulo para engordar letras, de otro modo no entendía lo que habías puesto de bold y plain. :lol:
Yo es que de fuentes... las de agua. xD
Voy a ver. :)

Autor:  jenesis [ 13 Ene 2011 12:54 ]
Asunto:  Re: Duda sobre colores de texto

Aaaah vale ya lo pillo. :lol:
A ver, he dejado default, pero.... no funciona, o igual es que sigo sin pillarlo. :lol:
En la intro he puesto:

Font negrita = new Font("default", Font.BOLD, 20);
Font normal = new Font("default", Font.PLAIN, 20);

mobile("guerrero").write("Para recibir instrucciones teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'AYUDA'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para pedir pistas teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'PISTA'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para ver las posibles salidas y el mapa, teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'SALIDAS'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para des/activar el sonido, ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'SONIDO OFF/ON'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para des/activar la descripción completa de una localidad al entrar en ella, ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'DESCRIPCION OFF/ON'");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write(".\nEsto no afecta a la acción 'MIRAR'.\n\n");

Y no pasa nada, al menos en ese cacho, después sí cambia la fuente, pero donde yo quiero que cambie, no. Vamos que no doy pie con bolo. :lol:
Yo solo quiero resaltar los metacomandos, no otra cosa.

Autor:  Al-Khwarizmi [ 13 Ene 2011 13:06 ]
Asunto:  Re: Duda sobre colores de texto

Lo de "default" es la fuente por defecto de Java. Con ese método estás diciéndole a Java que te construya una fuente normal o en negrita, y Java encapsula los detalles (pero no te deja elegir un fichero de fuente). Con el otro que he puesto, pones tú el fichero y te tienes que preocupar tú de que sea el fichero de fuente en negrita.

Cuando dices que te cambia de fuente después, ¿cuándo lo hace? ¿Es que lo hace con retraso?

Autor:  jenesis [ 13 Ene 2011 13:13 ]
Asunto:  Re: Duda sobre colores de texto

Al-Khwarizmi escribió:
Lo de "default" es la fuente por defecto de Java. Con ese método estás diciéndole a Java que te construya una fuente normal o en negrita, y Java encapsula los detalles (pero no te deja elegir un fichero de fuente). Con el otro que he puesto, pones tú el fichero y te tienes que preocupar tú de que sea el fichero de fuente en negrita.

Cuando dices que te cambia de fuente después, ¿cuándo lo hace? ¿Es que lo hace con retraso?


Lo hace a partir de la última línea, quiero decir que con la fuente elegida no se muestra absolutamente nada de lo que sale en ese código.

Autor:  Al-Khwarizmi [ 13 Ene 2011 13:15 ]
Asunto:  Re: Duda sobre colores de texto

Pues no sé, cuando tenga tiempo haré pruebas, pero no te garantizo tenerlo pronto, ya he perdido mucho tiempo esta mañana en esto y me veo trabajando hasta las 3 AM... :(

Autor:  jenesis [ 13 Ene 2011 13:31 ]
Asunto:  Re: Duda sobre colores de texto

Al-Khwarizmi escribió:
Pues no sé, cuando tenga tiempo haré pruebas, pero no te garantizo tenerlo pronto, ya he perdido mucho tiempo esta mañana en esto y me veo trabajando hasta las 3 AM... :(


Déjalo, no merece la pena, en serio.
Es hora de parar y no seguir con este proyecto, como ya he dicho en el otro hilo quedo a espera de el último reporte de la aventura. Si sale algún bug grave se arreglará pero solo eso, creo que hay que parar o esto no se va acabar nunca.
En el próximo proyecto que se empezará de limpio, ya se podrán pulir detalles de esta clase.

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/