Viene de
viewtopic.php?p=66255#p66255Al-Khwarizmi escribió:
La forma normal de jugar una aventura sin gráficos es mediante los clientes normales de AGE, para ello el autor de la aventura tiene que dar la opción de desactivar los gráficos. Lo que he de pensar es si dar una opción ya en el propio AGE para que el jugador pueda desactivarlos aunque el autor no proporcione la opción. El motivo por el que AGE no tiene eso ahora mismo es que no es obvio determinar qué es lo que se debe desactivar exactamente de manera que funcione en cualquier aventura (si el autor declara un frame - un marco donde se puede dibujar - ¿eso no debería ejecutarse en el modo no gráfico? ¿Y si está usando el marco para otra cosa que no sea dibujar, por ejemplo para hacer de margen o incluso para poner texto auxiliar?) Por eso (y no por ser un vago) es que por el momento pongo la pelota en el tejado del autor en estas cosas, porque el autor es el que va a saber qué aspecto debe tener su aventura con y sin gráficos, y cuáles son exactamente las cosas que no hay que ejecutar en modo sin gráficos.
Parece razonable, aunque se me ocurre la posibilidad de informar al cliente de AGE sobre los marcos involucrados en los gráficos y tal. Pero, de momento, centrémonos en que el autor se encargue del asunto, porque lo otro requeriría un cambio algo más profundo.
La opción actual es que el autor proporcione un comando extra (el típico gráficos sí/no) en el propio juego, pero se me antoja un tanto incoherente dada la filosofía de los clientes actuales de AGE, que proporcionan opciones en el menú para sonido y efectos de texto. Da la impresión de que la opción sobre gráficos encajaría perfectamente a su lado
Lo ideal sería tener ambas posibilidades sincronizadas, pero esto también requiere su estudio.
En la API actual existe, en el objeto del jugador, getIO().isGraphicsEnabled(), que intuyo está ahí precisamente para reflejar el estado de la supuesta opción y que ha de tenerse en cuenta siempre según la
documentación sobre imágenes.
Código:
if ( theClient instanceof MultimediaInputOutputClient ) && theClient.isGraphicsEnabled() )
Pero como durante la partida es posible que el jugador desee alternar, necesitaríamos un "evento" que indique que la configuración del cliente ha cambiado, algo como aPlayer.onGraphicsSwitch(boolean nuevo_estado_del_switch). Creo que debería llamarse únicamente cuando cambie el switch (para evitar llamadas fantasma, tipo "ha cambiado de true a true", que compliquen el asunto).
No sé cómo de factile sería, sobre todo teniendo en cuenta que podría ocurrir en cualquier momento (en especial durante un pulsa-tecla).
Serviría para que el autor destruya o recree la parte gráfica. Al recrearla, el autor volvería a cargar la imagen correspondiente al momento actual del juego, lo que obliga a llevar un control sobre las imágenes que se han ido no-mostrando (nótese que AGE no se limita al concepto "imagen por localidad").
Nosotros tenemos la cuestión gráfica centralizada (mediante funciones de apoyo) y creo que no sería problema conocer el estado a recrear, pero es dependiente de la forma en que la aventura usa los gráficos. Creo que se podría proporcionar una librería, para el caso más básico, basada en nuestras funciones, pero posiblemente no valdría para casos más complejos (más de un gráfico/frame, o gráficos superpuestos, etc...).
0.01 (ideas al vuelo)