Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Arcontus on November 17, 2013, 08:42:11 PM

Title: Ratón bloqueado al minimizar
Post by: Arcontus on November 17, 2013, 08:42:11 PM
Resulta que si tengo a pantalla completa el juego, si se minimiza por cualquier causa el ratón queda como cogido a la esquina superior izquierda y no se puede operar con el.
¿Alguna idea de como solucionarlo?
Gracias!
Title: Re:Ratón bloqueado al minimizar
Post by: Yawin on November 18, 2013, 10:08:25 AM
Sí, a mi también me suele pasar. Aunque nunca se me había ocurrido preguntar si tenía arreglo. ¿Lo tiene?
Title: Re:Ratón bloqueado al minimizar
Post by: Drumpi on November 18, 2013, 04:58:49 PM
Es raro.
Cuando me suele pasar eso con cualquier juego o programa, pulsando ALT+TAB se me debería cambiar de nuevo al juego o al escritorio (en este segundo caso, una nueva pulsación me devuelve al juego). Aunque se me ha dado el caso de algún juego a pantalla completa que no consigue restaurarse y se debe cerrar con el gestor de tareas.
Se puede hacer sin usar el ratón. No sé cómo será en 7 y en 8, pero en w2k y anteriores (creo que es válido en XP), la combinación CTRL+ALT+SUPR (¿os suena?) os debe abrir una ventana con varias opciones, entre ellas, el gestor de tareas o apagar el equipo. Si sabeis moveros por las ventanas con los cursores, el tabulador, el espacio y el intro, no debería ser difícil.

De todas maneras, si estais debugeando, no dejeis de meter la mod_debug y compilar con -g. Alt+x debería funcionar para hacer un hard-close al juego.
Title: Re:Ratón bloqueado al minimizar
Post by: Yawin on November 18, 2013, 05:12:09 PM
el caso es que a mi por ejemplo, me apetece minimizar un juego para ajustar un parámetro del fichero de configuración y posteriormente refrescar ingame. Y el ratón se queda arriba. Aún haciendo alt+tab. Aun haciendo ctrl+alt+supr (que en win vista en adelante es más cómodo hacer ctrl+mayus+esc).
Title: Re:Ratón bloqueado al minimizar
Post by: Arcontus on November 18, 2013, 05:42:57 PM
Lo de alt+tab funciona perfectamente, pero sin duda si no se conoce como le sucedió a un amigo que estaba probando mi proyecto, al final tuvo que reiniciar el pc y me dijo: "Solo por esto, ya no viciaría más a tu juego!" Sin duda la experiencia de usuario es importante y este "bug" es muy molesto.
Title: Re:Ratón bloqueado al minimizar
Post by: JaViS on November 18, 2013, 06:56:30 PM
yo lo soluciono asi:



if (!focus_status)

// en pc si sacamos el foco debemos restaurar la ventana para devolver el mouse al OS
if (full_screen)
restore_full_scren = true;
set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),16);
end

//mientras no se recupere el foco
while(!focus_status)
frame;
end

if (restore_full_scren)
full_screen = true;
set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),16);
end
end
Title: Re:Ratón bloqueado al minimizar
Post by: Arcontus on November 18, 2013, 07:56:54 PM
Quote from: JaViS on November 18, 2013, 06:56:30 PM
yo lo soluciono asi:



if (!focus_status)

// en pc si sacamos el foco debemos restaurar la ventana para devolver el mouse al OS
   if (full_screen)
      restore_full_scren = true;
      set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),16);
   end
   
   //mientras no se recupere el foco
   while(!focus_status)
      frame;
   end
   
   if (restore_full_scren)
      full_screen = true;
      set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),16);
   end
end

Me da un error, no reconoce "restore_full_scren"
Title: Re:Ratón bloqueado al minimizar
Post by: JaViS on November 18, 2013, 11:36:59 PM
pero no seas cabezon, es un ejemplo, tenes que declarar la variable y ponerlo dentro de un loop
Title: Re:Ratón bloqueado al minimizar
Post by: Arcontus on November 20, 2013, 09:37:58 PM
Quote from: JaViS on November 18, 2013, 11:36:59 PM
pero no seas cabezon, es un ejemplo, tenes que declarar la variable y ponerlo dentro de un loop
:O
Pues es verdad, no me di cuenta de alto tan simple... de todas maneras parece que sigue sucediendo lo mismo con el mouse. ¿Alguna idea?

PROCESS foco()
PRIVATE
    int restore_full_scren;
END
BEGIN
    LOOP
        if (!focus_status)
        // en pc si sacamos el foco debemos restaurar la ventana para devolver el mouse al OS
            if (full_screen)
                restore_full_scren = true;
                set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),32);
            end

            //mientras no se recupere el foco
            while(!focus_status)
                frame;
            end

            if (restore_full_scren)
                full_screen = true;
                set_mode(map_info(0,0,G_WIDTH),map_info(0,0,G_HEIGHT),32);
            end
        end
        FRAME;
    END
END
Title: Re:Ratón bloqueado al minimizar
Post by: Drumpi on November 30, 2013, 06:24:48 PM
Hombre, obviamente, al usuario final, eso es un problema gordo, porque cualquier molestia, por pequeña que sea, cualquier cosa más allá del doble clic y jugar, le hace perder el poco interés que pudiera tener en el juego (partimos de la premisa de que hacemos juegos indies, que no son famosos, y que el que lo juega lo hace por curiosidad). Muy bueno tiene que ser como para que lo pase por alto.
Pero no sé si eso es problema de Bennu, del SO o de las propias SDL.
Title: Re:Ratón bloqueado al minimizar
Post by: Arcontus on December 10, 2013, 11:32:55 PM
Quote from: Drumpi on November 30, 2013, 06:24:48 PM
Hombre, obviamente, al usuario final, eso es un problema gordo, porque cualquier molestia, por pequeña que sea, cualquier cosa más allá del doble clic y jugar, le hace perder el poco interés que pudiera tener en el juego (partimos de la premisa de que hacemos juegos indies, que no son famosos, y que el que lo juega lo hace por curiosidad). Muy bueno tiene que ser como para que lo pase por alto.
Pero no sé si eso es problema de Bennu, del SO o de las propias SDL.

Continuo con el problema... ¡ayuda! :'( :'(
Title: Re:Ratón bloqueado al minimizar
Post by: Arcontus on December 20, 2017, 09:01:43 AM
Solventé el problema hace tiempo, pero se me olvido postear mi solución:


PROCESS EstadoFocus()
PRIVATE
    estado;
END
BEGIN
    estado = 1;
    LOOP
        if ((focus_status) && (estado == 0))
             set_mode(Resolucion_x,Resolucion_y,Resolucion_modo, mode_fullscreen);
             estado = 1;
         else
             if (estado == 1)
                 if (!(focus_status))
                       set_mode(Resolucion_x,Resolucion_y,Resolucion_modo, mode_window);
                       estado = 0;
                END
            END
         END
         FRAME;
     END
END


Por si a alguien le sucede lo mismo, esta función que corre en segundo plano se encargará de no bloquear al mouse cambiando entre los modos ventana y pantalla completa de manera transparente.

Un saludo!
Title: Re:Ratón bloqueado al minimizar
Post by: Drumpi on December 20, 2017, 11:45:58 PM
Me alegra ver que al final has podido resolverlo :D
Hay que tomar nota para que no se olvide esto, porque puede ser importante para otros desarrollos. Muchas gracias por tu solución :)