CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 16 Oct 2019 23:27

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página Anterior  1, 2
Autor Mensaje
NotaPublicado: 12 Abr 2011 15:06 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 24 Ago 2007 00:41
Mensajes: 2023
Ubicación: Chile
joruiru escribió:
Bueno, pues si alguien tiene interés aquí está el código de cómo lo he hecho:

Spoiler: Mostrar
Código:
Include "infglk";

[ HandleGlkEvent  ev contexto;
   ! HandleGlkEvent de libreria SGW
   SGW_HandleGlk(ev);

   if (ev-->0 == evtype_Timer) {
     glk_cancel_line_event(gg_mainwin, gg_event); !Cancelamos la entrada de usuario
     buffer-->0 = gg_event-->2;

      if (oArboles hasnt cortado) {
        mensaleatorios;
      } else {
          glk_request_timer_events(0); ! desactivamos el timer
      };
     
    !Se escribe el prompt y se restaura el input del jugador
    print "^>> ";
    glk_request_line_event(gg_mainwin, buffer + WORDSIZE, INPUT_BUFFER_LEN - WORDSIZE, buffer-->0);
  }
  return 2;
];

Include "sgw+dmx";           ! Incluir la extension SGW+DMX


Y en el intialise:
Código:
    if (glk_gestalt(gestalt_Timer,0) == 1) {
        glk_request_timer_events(30000); ! ticks cada 30 segundos
    }


Vaya! :mrgreen: Veo que has estado usando SGW+DMX :mrgreen: :mrgreen:

Y que, además, los cambios que hice para aumentar la flexibilidad [sépase, el SGW_HandleGlk()] te han venido de perlas (lo cual quiere decir que consiguen su objetivo de ser útiles. :)

Un aviso: si en alguna parte utilizas la rutina wait() de SGW+DMX (para la espera de una pulsación del teclado), recuerda que esta puede ser "temporizada", lo cual reprogramaría el timer y rompería tu ciclo actual de 30 segundos. Si vas a usar esa rutina, recuerda no utilizarla en modo temporizado, o si necesitas tal modo, mejor envuélvela en una rutina wrapper, tal que:

Código:
[ MiEsperarTecla msg time;
    ! hacemos la pausa
    wait(msg, time);
    ! reprogramamos el temporizador Glk
    if (glk_gestalt(gestalt_Timer,0) == 1) {
      glk_request_timer_events(30000); ! ticks cada 30 segundos
    }
];


Por otro lado, si tu juego utiliza el temporizador, tal vez sea bueno que en la comprobación en tu Initialise() avises que si no hay funcionalidad de temporizador soportada por el intérprete, algunas características (los mensajes automáticos) no serán mostrados. [Tampoco es mala decisión desactivar la característica de manera silenciosa, como has hecho hasta ahora, siempre y cuando la funcionalidad de los mensajes no sea crítica para el progreso del juego.] (Ej: Damusix se desactiva silenciosamente si el intérprete no soporta audio. Aunque igual incluyo una rutina para comprobar y mostrar un aviso en consecuencia, a elección del programador.)

Saludos! y enhorabuena. Este trozo de código que has compartido será muy útil para todos. :)

_________________
Eliuk Blau
eliukblau (AT) gmail.com
http://www.caad.es/eliukblau/


Arriba
 Perfil  
 
NotaPublicado: 12 Abr 2011 15:30 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Lo he hecho para imprimir mensajes de ambientación, así que no son críticos para el juego.

De todas formas si más adelante lo uso para algo más crítico, tendré en cuenta tus consejos.

Gracias!

_________________
El humor existe para recordarnos que por muy alto que sea el trono en el que uno se siente, todo el mundo usa su culo para sentarse.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página Anterior  1, 2

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM