Pausas y tiempo realOtros trucosEntrada por ratónHiperenlaces

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.


Pausas y tiempo realOtros trucosEntrada por ratónHiperenlaces