Hola a todos!.
Bueno vengo con la siguiente duda: como hacer para pausar el juego, es decir, al presionar una tecla congelar todos los procesos y que no sigan apareciendo más hasta que la tecla sea presionada nuevamente. La idea que tenía pensada es congelar todos los procesos con S_FREEZE, pero no se como hacerlo para que todos los procesos activos lo reciban, intente haciendo signal(TYPE x, S_FREEZE), donde x son cada uno de los procesos del juego, pero me di cuenta que eran demasiados procesos a congelar, así que rechaze esta opción.
Y bueno, para que no sigan apareciendo más, era utilizar una variable booleana que al cambiar de estado no puedan aparecer más procesos.
Espero puedan ayudarme y de antemano muchas gracias ^^!.
http://forum.bennugd.org/index.php?topic=1149.0
Quote from: SplinterGU on December 12, 2010, 01:35:03 AM
http://forum.bennugd.org/index.php?topic=1149.0
Muchas gracias, busque por el foro pero no habia visto ese post. :P
Bueno eso era lo que me faltaba, la constante "ALL_PROCESS". Bueno aquí esta el codigo por si a alguien más le sirve:
//pausar el juego.
if(key(_p))
if(key_p == true)
key_p = false;
if(congelado == false)
congelado = true;
txt_pausa = write(0, 320, 240, 4, "-PAUSA-");
//detener todo.
signal(ALL_PROCESS, S_FREEZE);
else
congelado = false;
delete_text(txt_pausa);
//restaurar todo.
signal(ALL_PROCESS, S_WAKEUP);
end
end
else
key_p = true;
end
PD: "key_p" es una variable booleana inicializada en "true" (sirve para que no se pueda mantener presionada la tecla 'p').
"congelado" es una variable booleana inicializada en "false" para saber si ya esta o no congelada la pantalla y hacer lo inverso.
eso no te sirve, porque podes tener procesos dormidos o congelados previamente a la pausa... por eso te pase el link donde tenes la funcion para hacer la pausa.
Quote from: SplinterGU on December 12, 2010, 02:33:05 AM
eso no te sirve, porque podes tener procesos dormidos o congelados previamente a la pausa... por eso te pase el link donde tenes la funcion para hacer la pausa.
Mmm tienes razón... pero si en mi proyecto no duermo ni congelo ningun proceso, excepto para pausar el juego nada más? podría servir?, de antemano grax :)
Si quieres pausar tambien la musica cuando pausas el juego tienes estas funciones:
pause_wav(all_sound); // Pausa
resume_wav(all_sound); // Volver al juego
Quote from: FreeYourMind on December 12, 2010, 02:46:05 AM
Si quieres pausar tambien la musica cuando pausas el juego tienes estas funciones:
pause_wav(all_sound); // Pausa
resume_wav(all_sound); // Volver al juego
Gracias!, aunque he optado por disminuir el sonido de la musica a "20" cuando este pausado y luego restaurarlo al retomar el juego :P.
Quote from: Khedrak on December 12, 2010, 02:39:07 AM
Quote from: SplinterGU on December 12, 2010, 02:33:05 AM
eso no te sirve, porque podes tener procesos dormidos o congelados previamente a la pausa... por eso te pase el link donde tenes la funcion para hacer la pausa.
si, claro, pero puede ser mas dificil luego si te olvidas y necesitas modificar el comportamiento.
pero bien, adelante...
Mmm tienes razón... pero si en mi proyecto no duermo ni congelo ningun proceso, excepto para pausar el juego nada más? podría servir?, de antemano grax :)