AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 menuShow

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Caly
Utilisateur confirmé: Rang ****


Messages : 1262
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: menuShow   Jeu 12 Avr 2012 - 16:32

Bonjour,

Depuis plus d'une semaine j'essai de faire un menu à sous menus appelé comme la fonction native de GM 'show_menu().
Malheureusement je bloque sur l'affichage graphique, j'ai réussi à avoir quelques résultats potables mais en fouillant bien c'était COMPLÈTEMENT beugé.

En fouillant sur la toile j'ai trouvé un script qui fait ce que j'essai de faire:
http://gmc.yoyogames.com/index.php?showtopic=233158
Les liens de téléchargements sont morts mais vous pouvez trouver le script ici:
http://www.host-a.net/u/PivotGamer84/show_menu_ext.gm6

Il y a aussi bien sur le script de SPLN disponible ici:
http://cbna.forumactif.com/t11485-spg-s-portable-graphic

Pour ce qui est du système de SPLN je le trouve trop complexe et pas assez bien pensé (j’espère d’ailleurs que ce post va lui permette d'améliorer ça Wink).
Et pour l'autre script c'est tout simplement codé monstrueusement, on arrive même pas à comprendre ce qu'il réalise dans son script.
Mais le résultat est très satisfaisant.

J'ai donc voulus prendre exemple mais impossible de comprendre son charabia, nom de variables ignoble, pas de commentaire, mal indenté, bref incompréhensible et pas du tout optimisé.

N'ayant pas le temps et le courage de persister dans mes échecs je donne toutes mes sources en espérant que quelqu'un arrive à quelque chose avec. (Aller SPLN sort nous un truc qui roxx, ou Oni dégoûte nous en fessant un truc de trois lignes qui fonctionne -_- )

Les voici:
http://www.host-a.net/u/Caly/menuShow.gmk

(ne pensant pas les partager ainsi c'est coder à ma manière avec juste les commentaires que je pensé utiles pour moi même)

En espérant que quelqu'un en fasse un bon usage...


Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***


Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Re: menuShow   Ven 13 Avr 2012 - 2:00

A vrai dire ces temps-ci j'ai pas trop le temps à cause du BAC d'Histoire/Géo et celui de Français du coup je programme beaucoup moins. Sinon j'ai compris comment il a fait pour son script en fait il utilise exactement la même méthode que moi sauf que les sous-menus et autres extras sont séparés par des caractères de séparations permettant ( d'où l'horreur de mon code qui lui stock chaque menu dans une liste et chaque menu déroulant dans un objet ) de ne pas à charger d'autres objets comme moi j'ai pu le faire, il ne fait qu'un simple draw. Cependant lui aussi utilise une while + io_handle() + screen_refresh(), du coup je ne devrais pas avoir trop de mal à comprendre ce qu'il a fait.

Dès que j'aurais fini les cours je tenterais de décrypter ce charabia Razz

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
Caly
Utilisateur confirmé: Rang ****


Messages : 1262
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: menuShow   Ven 13 Avr 2012 - 11:55

Oui toi tu à fait trop compliqué avec objet et tout le tralala, mais au moins tu as réussi à sortir un truc alors que moi niet Razz

Niveau parsage pas de problème je récupère les infos que je veux dans mes listes, pareille pour la boucle infini j'y arrive sans problème c'est après que je bloque complètement.

Je ne sais pas si tu reprend ce que je fait mais si c'est le cas et que tu as besoin d'explications sur certains passages n’hésite pas.
Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***


Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Re: menuShow   Mer 18 Avr 2012 - 9:38

J'ai fini de "décrypter son code" en fait c'est pas sorcier Wink faut juste comprendre le nom des variable et après ça coule de source par contre c'est TRÈS lourd. Donc grosso-modo il a fait un object_add avec "i" à assigner des variables parfois à coup de execute_string. Ça c'est la 1ère partie. On voit qu'il assigne des variables dans des arrays et très souvent double lié à un item et ses caractéristiques comme la couleur, sa position, etc...

Ensuite la 2e partie caractérisé par "var blabla;" au début il calcule la position du menu, puis des sous-menus ainsi que le "fix" pour éviter que le menu sorte de l'écran. Enfin il y a la fameuse boucle while et les doubles boucle for dont la plus grande est celle pour les menus/sous-menus et items sachant que celle du début concerne la souris.

Bref, ça m'a donné une idée pour optimiser mon code. Au lieu de faire une boucle for + switch puis création d'objet pour un sous-menu, je ferais double boucle for + switch. J'ai également analysé ton code qui est très bien organisé d'ailleurs, le seul hic c'est qu'on ne peut pas draw de menu, tout simplement car il faut faire des calculs de la taille maximal de l'item, du sprite ainsi que du menu (moi je fais ça avec spg_menu_recalc()) à mon avis c'est juste là que ça coinçait.

Au final, je me demande si nos méthodes ne sont pas plus rapides que la sienne, car il utilise au début des object_add des execute_string, des variables à double array tout ça dans de multiple boucle for avec des calculs/assignation de variable en masse ><. Certes nous avons fait une fonction pour initialiser un menu mais pas lui mais quand même :/

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
onilink_
Modérateur


Messages : 8802
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: menuShow   Mer 18 Avr 2012 - 9:59

Sinon pour l'initialisation vous suffit d'ajouter un truc genre

if(!variable_global_exists("__tab_init__"))
{
initialisationTab()
global.__tab_init__ = 1
}

et y a plus rien a redire Razz

_________________
                 
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****


Messages : 1262
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: menuShow   Mer 18 Avr 2012 - 16:28

Citation :
car il faut faire des calculs de la taille maximal de l'item, du sprite ainsi que du menu
Les tailles des menus sont stockées dans 'list_item_width' (de mémoire, car je n'ai pas GM sous la main).
Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***


Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Re: menuShow   Ven 4 Mai 2012 - 13:34

Bon bientôt, je pars en vacance et donc je vais être plus ou moins disponible en fonction des jours. J'ai fini d'adapté mon code juste pour afficher un menu déroulant. En revanche, je me suis heurter à un problème, c'est que son code calcul la position de tous les menus, sous-menus ce qui explique que ce soit quasi-instantané. Mon système étant basé différemment, on peut avec mon code créer un menu déroulant avec des sous-menus à l'infini ><'. (Ex: Menu1 => Menu2 => Menu1) Je n'est pas encore trouvé d'utilité à se système, mais bon peut-être que ça servira à quelqu'un XvP. Du coup, j'ai opté pour le calcul des menus lors de leurs créations.

J'ai aussi annoté un minimum mon code pour qu'il soit "compréhensible", au cas ou voudriez vous en inspirer. Même si c'est loin d'être optimiser, surtout que ça me force à utiliser des variables à double array Xv(. Au niveau des performances sur mon PC pour 3~5 Menus je passe de 30/60 FPS à 40/60 FPS. Et j'ai également rajouté le support du clavier ;v). Mais elle ne supporte pas encore le fait de geler le jeu.

Voici le lien SPG.gmk

Pour faire apparaitre un menu il suffit de maintenir ( numpad7 ou numpad8 ou numpad9 ) et d'appuyer sur D. Il faut également éviter de toucher au field car j'étais entrain de le recoder, du coup ça déclenchera une erreur ^^". J'espère que ce bout de code un peu cochon pourra t'inspirer pour faire tes menus. En ce qui concerne le code tout est dans l'objet _popup_menu2_.

Voilà.

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
Caly
Utilisateur confirmé: Rang ****


Messages : 1262
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

MessageSujet: Re: menuShow   Dim 6 Mai 2012 - 18:43

Yep c'est cool, mieux que l'ancienne version. Il ne te reste plus qu'a remplacer les objets par un draw Wink
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: menuShow   Aujourd'hui à 16:03

Revenir en haut Aller en bas
 
menuShow
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets communs-
Sauter vers: