| menuShow | |
|
|
Auteur | Message |
---|
Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: menuShow Jeu 12 Avr 2012 - 18: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=233158Les liens de téléchargements sont morts mais vous pouvez trouver le script ici: http://www.host-a.net/u/PivotGamer84/show_menu_ext.gm6Il y a aussi bien sur le script de SPLN disponible ici: https://cbna.forumactif.com/t11485-spg-s-portable-graphicPour 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 ). 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... |
|
| |
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)
| Sujet: Re: menuShow Ven 13 Avr 2012 - 4: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 |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: Re: menuShow Ven 13 Avr 2012 - 13: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 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. |
|
| |
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)
| Sujet: Re: menuShow Mer 18 Avr 2012 - 11:38 | |
| J'ai fini de "décrypter son code" en fait c'est pas sorcier 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 :/ |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: menuShow Mer 18 Avr 2012 - 11: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 |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: Re: menuShow Mer 18 Avr 2012 - 18: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). |
|
| |
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)
| Sujet: Re: menuShow Ven 4 Mai 2012 - 15: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.gmkPour 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à. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 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.
| Sujet: Re: menuShow Dim 6 Mai 2012 - 20:43 | |
| Yep c'est cool, mieux que l'ancienne version. Il ne te reste plus qu'a remplacer les objets par un draw |
|
| |
Contenu sponsorisé
| Sujet: Re: menuShow | |
| |
|
| |
| menuShow | |
|