Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Fermer GUI pause/save/quit

Aller en bas 
AuteurMessage
CookiewooD
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 38

Age : 30

Localisation : Gard

Date d'inscription : 18/09/2018


MessageSujet: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 13:57

Bonjour à tous,

Je reviens vous embêter avec mes questions bêtes de grande débutante sourire Je suis toujours sur un template BASS (2clicks) et j'en suis à custom l'interface langue (Plus ça va, plus je me dis que vous avez raison et que j'aurais du partir sur du Empty mais étant très novice et travaillant sur un projet à 3 personnes, je devais trouver une solution rapide... le prochain sera sans template promis langue)

Je souhaiterai donc faire un menu qui fasse à la fois Pause, save et quit. Je me débrouille pas trop mal sur la création de la GUI en elle même et des boutons mais je n'ai pas réussi à trouver comment faire pour que ce menu soit lié à la touche espace pour l'ouvrir ET aussi pour le fermer.

Pour le moment mon "system key" ressemble à ça. Le menu s'ouvre correctement en appuyant comme prévu sur espace mais ne se ferme pas (forcement) par contre je lui ai demandé aussi de ne pas rendre l'inventaire visible en même temps et pourtant l'inventaire s'obtine à s'ouvrir derrière le menu pause si mon curseur touche le top edge de l'écran.

D'avance merci. Force et café^^

Code:
 // "System Keys"
  if (keycode == eKeyCtrlQ) QuitGame(1); // Ctrl-Q
  if (keycode == eKeyF9) RestartGame(); // F9
  if (keycode == eKeyF12) SaveScreenShot("scrnshot.pcx");  // F12
  if (keycode == eKeySpace)
      gPause.Visible = true;
      gInventoryBar.Visible = false;

Petit teaser pour les curieux langue

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 2637

Date d'inscription : 01/08/2006


MessageSujet: Re: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 17:14

J'aime bien le style graphique !

Lorsque tu n'utilises pas les accolades { }, les if, else if et else ne concerne que la commande qui précède le prochain point-virgule ; donc dans le code que tu as posté, la ligne 7 n'est pas interprétée dans la portée du if. Le résultat c'est que la ligne est exécutée à chaque fois qu'on appuie sur n'importe quelle touche.

En ce qui conerne l'alternance affichage/masquage lors de l'appui sur espace, tu peux utiliser une petite astuce à propos des booléens qui consiste à inverser la valeur à chaque appui sur espace plutôt qu'à donner une valeur constante comme tu le fais maintenant. Ça donnerait quelque chose comme ça :
Code:
if (keycode == eKeySpace) {
   gPause.Visible = !gPause.Visible;
   gInventoryBar.Visible = !gPause.Visible;
}

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
CookiewooD
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 38

Age : 30

Localisation : Gard

Date d'inscription : 18/09/2018


MessageSujet: Re: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 18:09

Coucou Kitai, tu vas bien ?

J'ai fait comme tu m'as dit mais l'inventaire continue à apparaître en arrière plan du menu quand mon curseur touche le haut de l'écran et le menu ne se ferme pas en appuyant de nouveau sur espace :'(

Merci sourire On a une concept artist très talentueuse.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1546

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 20:31

Ah tiens j'avais jamais pensé à cette astuce, @Kitai, c'est pas mal ça.

@CookiewooD, dans les options de ton gInventoryBar. Tu dois avoir une option "visible quand il est survolé par le curseur" (ou quelque chose comme ça, je ne sais plus comment c'est écrit) activée. Ou alors c'est dans le repeatedly_execute. Quoi qu'il en soit, l'inventaire n'est masqué qu'à l'instant où tu appuies sur espace, si une autre commande le rend visible entre deux, il réapparaîtra même si tu n'as pas fermé le menu. Il va donc falloir coder ça un peu différemment.
La fonction PauseGame sera surement utile (parce que là rien ne dit que le jeu est en pause, ça dit seulement que tu joue sur la visibilité de deux interfaces). Edit : En fait non, cf mon message suivant.

Pour le fait que le menu ne se ferme pas en appuyant de nouveau sur espace, quelque chose doit bloquer mais là il manque quelques informations je n'ai pas trop d'idée.

Il faudrait qu'on en voit plus sur le code, mais je ne sais pas trop où, peut-être la fonction "on_key_press" dans son ensemble ou éventuellement "repeatedly_execute".

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes


Dernière édition par valoulef le Sam 22 Sep 2018 - 22:22, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
avatar

Nombre de messages : 5661

Age : 40

Localisation : Montpellier

Date d'inscription : 17/04/2006


MessageSujet: Re: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 21:25

Sympa le screenshot, j'ai hâte sourire

Perso, pour ton menu, moi j'utiliserais un truc comme ça dans le Repeadedly_execute :

if (keycode = eKeySpace){
if (gPause.Visible == true){
gPause.Visible = false;
}
else {
gPause.Visible = true;
}
}

_________________
Mon profil Facebook!
Mon site avec tous mes jeux, vidéos, illustrations etc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marionpoinsot.fr/video
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
avatar

Nombre de messages : 1546

Age : 29

Localisation : Condate

Date d'inscription : 01/08/2011


MessageSujet: Re: Fermer GUI pause/save/quit   Sam 22 Sep 2018 - 21:46

Ok alors je suis allé voir à quoi ressemblait le template en question (je n'avais plus AGS sur mon pc). En ce qui concerne ton premier problème c'est effectivement dans le repeatedly_execute du script "TwoClickHandler" :

Code:

function repeatedly_execute()
{
 if (!gInventoryBar.Visible && mouse.y <= INVENTORY_POPUP_POSITION)
 {
 gInventoryBar.Visible = true;
 }

Ce que ça dit c'est que quand la coordonnée y de la souris sera inférieure ou égale à la valeur de INVENTORY_POPUP_POSITION (par défaut définie sur 7 dans le header) alors l'inventaire devient visible.

Pour le fait que le menu ne disparaît pas quand tu appuies à nouveau sur la touche Espace, cela doit venir d'ici, au début de la fonction on_key_press du GlobalScript :

Code:
function on_key_press(eKeyCode keycode)
{
  if (IsGamePaused()) keycode = 0;

Là en gros ça désactive le clavier quand le jeu est en pause. J'en déduis donc que tu as du régler ton GUI sur "Pause Game when shown" (j'avais oublié cette possibilité).

La solution : Dans le repeatedly_execute du premier script ("TwoClickHandler"), tu peux ajouter ça au tout début :

Code:
function repeatedly_execute()
{
  if (IsGamePaused()){
  }
  
  return;

En faisant ça, tout ce que tu mettras à l'intérieur de cette fonction sera exécuté :
- Que le jeu soit en pause ou non pour tout ce que tu mettras au dessus de cette condition.
- Si et seulement si le jeu est en pause pour tout ce que tu mettras entre les accolades de cette condition.
- Si et seulement si le jeu n'est pas en pause pour tout ce qui se trouve en dessous de "return;" (les lignes pré-codées, donc).

Ainsi, la commande rendant l'inventaire visible étant placée en dessous de ce "return;", elle ne sera plus appelée lorsque tu seras dans le menu pause et l'inventaire ne s'affichera donc plus.

Ensuite tu peux faire pareil en modifiant légèrement la fonction on_key_press du GlobalScript comme suit :

Code:
function on_key_press(eKeyCode keycode)
{
  if (keycode == eKeySpace){
    if (gPause.Visible) gPause.Visible = false;
    else {
       gInventoryBar.Visible = false;
       gPause.Visible = true;
    }
  }
  
  if (IsGamePaused()) {
    //remplace "keycode = 0" par ces accolades
  }
  
  return;
//Les commandes par défaut sont à laisser en dessous

De cette manière, comme vu précédemment, ton code devrait s'exécuter que le jeu soit en pause ou non, tout en laissant les autres touches ne fonctionner que si le jeu n'est pas en pause.
Edit : J'ai modifié la proposition de @Kitai après coup, car je me suis rendu compte qu'en l'état, la barre d'inventaire risquait d'apparaître une fraction de seconde sans raison valable au moment où le joueur quitte la pause, ce qui n'aurait pas fait très propre.

C'est vrai que le piège avec les templates, c'est que ça peut être tentant quand on débute pour se faciliter la tâche, mais le problème c'est que dès que l'on veut un tant soit peu personnaliser le moteur, on entre en conflit avec tout ce qui a été programmé par quelqu'un avant et qu'il n'est pas forcément aisé de déchiffrer. Surtout ici où le code est réparti sur deux scripts. Après ça peut être aussi une source d'inspiration de se pencher sur la manière dont le template à été programmé...

Bref, j'espère avoir été assez clair, n'hésite pas à nous dire ce que ça donne. sourire

_________________
"Je ne suis point cet assemblage de membres que l’on appelle le corps humain ; je ne suis point un air délié et pénétrant répandu dans tous ces membres ; je ne suis point un vent, un souffle, une vapeur, ni rien de tout ce que je puis feindre et m’imaginer, puisque j’ai supposé que tout cela n’était rien, et que, sans changer cette supposition, je trouve que je ne laisse pas d’être certain que je suis quelque chose."

René Descartes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
CookiewooD
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar

Nombre de messages : 38

Age : 30

Localisation : Gard

Date d'inscription : 18/09/2018


MessageSujet: Re: Fermer GUI pause/save/quit   Dim 23 Sep 2018 - 8:38

Woooooot ! Merci les gars, j'ai fait un mélange des conseils de Shai-La et de Valoulef et ça marche au tooooooop (et en n'ajoutant que 7 lignes! 5 dans le globalscript et 2 dans le 2clicks handler) sourire

Merci merci merci <3
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
avatar

Nombre de messages : 5661

Age : 40

Localisation : Montpellier

Date d'inscription : 17/04/2006


MessageSujet: Re: Fermer GUI pause/save/quit   Dim 23 Sep 2018 - 11:27

Bravooo !

_________________
Mon profil Facebook!
Mon site avec tous mes jeux, vidéos, illustrations etc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://marionpoinsot.fr/video
Contenu sponsorisé




MessageSujet: Re: Fermer GUI pause/save/quit   

Revenir en haut Aller en bas
 
Fermer GUI pause/save/quit
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» redémarrage apres longue pause
» [a fermer]logiciel pour controler un mirror
» Jeu Flash sympa pour la pause café
» Shaneze Enfin arrivée!!! (Ellowyne Save Me de Lorie)
» Petite pause =x

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: