Hiperenlaces
Hiperenlaces son imágenes o trozos de texto que, cuando el usuario
pincha con el ratón sobre ellos, enviarán un mensaje a
HandleGlkEvent()
, indicando que han sido pinchados, lo que te
permite ejecutar código especial si quieres. Por ejemplo, podrías
insertar notas al pie "clickables", que muestren su texto si el
jugado pincha en ellas. O permitir a los jugadores que se muevan
simplemente pinchando sobre los nombres de las salidas en las
descripciones de las localidades... hay infinitas posibilidades. Los
hiperenlaces se preparan de forma muy similar a los eventos de ratón
para ventanas gráficas o de rejilla. Lo primero que hay que hacer es
alertar al programa de que debe estar atento a las pulsaciones de
ratón sobre un hiperenlace:
glk_request_hyperlink_event(gg_mainwin);
|
(Cambia el nombre de la ventana en la que aparecerán los hiperenlaces,
si no es gg_mainwin
. Si quieres enlaces en muchas ventanas,
tendrás que repetir una línea como la anterior para cada una de
ellas.) Ahora el programa está listo para responder a un enlace, sólo
tienes que construir los enlaces propiamente dichos. Esto se hace con
la llamada a glk_set_hyperlink()
. Esta función recibe un parámetro,
que debe ser un número distinto de cero que identifique de forma única
a tu enlace. Probablemente querrás crear constantes para referirte a
los números que hayas elegido para los enlaces. En tu código, algo
como ENLACE_IR_NORTE
es bastante más claro que algo como, por
ejemplo, 67
. Cualquier texto o imagen que se muestre en pantalla
después de la llamada a glk_set_hyperlink()
será parte del enlace,
hasta que ejecutes una llamada a glk_set_hyperlink(0)
. Si dos
enlaces van seguidos, puedes omitir esta llamada entre ambos. Tan
pronto como comienza un enlace nuevo, se da por terminado el anterior.
Ahora tus enlaces ya están listos, y todo lo que necesitas es
programar HandleGlkEvent()
para que responda a ellos cuando el
jugador pinche en uno. Por ejemplo, podría ser así:
[ HandleGlkEvent ev contexto abortres comandonuevo longcomando;
switch (ev-->0) {
evtype_Hyperlink:
glk_request_hyperlink_event(gg_mainwin);
! Pon codigo aqui analogo al que vimos para manejar
! el raton. La unica diferencia es que ahora ev-->1
! contiene la ventana, y ev-->2 el numero del link
! sobre el que el jugador ha pinchado
}
];
|
Y al igual que en la sección previa, recuerda que tras responder a un
click sobre un hiperenlace, el programa no responderá a otro, a menos
que explícitamente le digas que lo haga.