Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 15:47 | |
| Bonjour, J'ai fait rapidement un petit browser permettant d'afficher graphiquement une liste. Notez que je l'ai réalisé sous GM 5.3A (best GM version ever ), il est donc possible que certains trucs ne marchent pas, je l'ai adapté vite fait pour GM 6.1. Télécharger - GM6 Create event : - Citation :
- list_file=ds_list_create(); //la liste qui contient les infos à afficher
//variables xmin=0; //position x du browser ymin=0; //position y du browser xmax=room_width; //position x2 du browser (comme pour un rectangle) ymax=room_height; //position y2 du browser (idem) case_border_color=c_black; //couleur de la bordure des noms de fichiers case_brush_color=c_gray; //couleur des cases des noms de fichiers case_font_color=c_black; //couleur de la police utilisée case_brush_color_select=c_blue; //couleur de la case quand survolée par le curseur case_font_size=10; //taille de la police (GM 5.3A) case_size=16; //taille d'une case
//configuration des glissières show_scrollbar=true; //afficher ou non les glissières scrollbar_width=16; //largeur des glissières scrollbar_height=room_height; //hauteur des glissières (voir script_step) scrollbar_color=c_gray; //couleur de fond des glissières scrollbar_line_color=c_black; //couleur de bordure des glissières scrollbar_button_color=c_gray; //couleur des boutons de navigation scrollbar_triangle_color=c_blue; //couleur des triangles des boutons de navigation scrollbar_index=0; //n° de la référence de la liste affichée en premier
//création d'une liste, qui peut être remplacée par un script de listing de répertoire ds_list_add(list_file,"pomme"); ds_list_add(list_file,"poire"); ds_list_add(list_file,"banane"); ds_list_add(list_file,"mangue"); ds_list_add(list_file,"pêche"); ds_list_add(list_file,"fraise"); ds_list_add(list_file,"cerise"); ds_list_add(list_file,"abricot"); Step event : - Citation :
- //Décommentez la ligne ci-dessous si vous souhaitez que la flèche du bas apparaisse au niveau du dernier élément
//de la liste si celle-ci prends moins de place en hauteur que spécifié par scrollbar_height
//scrollbar_height=ds_list_size(list_file)*case_size;
if mouse_check_button(mb_left) if mouse_y>ymin and mouse_y<ymin+scrollbar_height and mouse_x>xmax-scrollbar_width { if mouse_y>ymin and mouse_y<ymin+scrollbar_width and scrollbar_index>0 then scrollbar_index-=1; if mouse_y>ymin+scrollbar_height-scrollbar_width and mouse_y<ymin+scrollbar_height and scrollbar_index<ds_list_size(list_file)-floor(scrollbar_height/case_size) then scrollbar_index+=1; } Draw event : - Citation :
- //Dessin des cases
yact=ymin; cs_num=0+scrollbar_index; repeat ds_list_size(list_file)-floor((case_size*ds_list_size(list_file))/scrollbar_height) { if mouse_y>yact and mouse_y<yact+case_size and x<xmax-scrollbar_width then draw_set_color(case_brush_color_select) else draw_set_color(case_brush_color); draw_rectangle(xmin,yact,xmax-scrollbar_width,yact+case_size,false); draw_set_color(case_border_color); draw_line(xmin,yact,xmax-scrollbar_width,yact); draw_line(xmin,yact,xmin,yact+case_size); draw_line(xmin,yact+case_size,xmax-scrollbar_width,yact+case_size); draw_line(xmax-scrollbar_width,yact,xmax-scrollbar_width,yact+case_size); draw_set_color(case_font_color); draw_text(xmin,yact,string(ds_list_find_value(list_file,cs_num))); cs_num+=1; yact+=case_size; }
//Dessin de la scrollbar if show_scrollbar { draw_set_color(scrollbar_button_color); draw_rectangle(xmax-scrollbar_width,ymin,xmax,ymin+scrollbar_width,false); draw_rectangle(xmax-scrollbar_width,ymin+scrollbar_height-scrollbar_width,xmax,ymin+scrollbar_height,false); draw_set_color(scrollbar_triangle_color); draw_triangle(xmax-scrollbar_width,ymin+scrollbar_width,xmax,ymin+scrollbar_width,xmax-scrollbar_width/2,ymin,false); draw_triangle(xmax-scrollbar_width,ymin+scrollbar_height-scrollbar_width,xmax,ymin+scrollbar_height-scrollbar_width,xmax-scrollbar_width/2,ymin+scrollbar_height,false); }
Enfin, vous pouvez faire un event global left released et trouver quelle ligne est cliquée comme ceci : - Citation :
- if mouse_y < ds_list_size(list_file)*case_size and mouse_x<xmax-scrollbar_width
{ //vos actions show_message("Cliqué : "+string(ds_list_find_value(list_file,floor(mouse_y/case_size)))); } Voilà, bonne utilisation, n'hésitez pas si vous avez des remarques !
Dernière édition par Max le Dim 13 Juin 2010 - 15:53, édité 1 fois |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 15:51 | |
| Manque plus que l'option deplacer et on a le menu de pokemon |
|
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 15:52 | |
| xD jviens de me rendre compte que j'ai laissé en commentaire mes essais... Je corrige ça
EDIT : ayé splus propre comme ça |
|
Chulien Utilisateur confirmé: Rang *****
Messages : 2232
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 15:55 | |
| - onilink_ a écrit:
- Manque plus que l'option deplacer et on a le menu de pokemon
lol pas mal |
|
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 16:15 | |
| Bon y'a de nombreuses erreurs sur le script, je corrige et je renvoie |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 16:25 | |
| cool en tt cas mais faudrais peut etre faire une version lite pour les non enregistrés. :pac_dr: |
|
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 16:37 | |
| jconnais pas les limitations de la lite :pac_dr: |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 16:41 | |
| ben on peut pas utiliser les ds_list, pareil pour les autres data structures d'ailleur. Faudras juste remplacer par des tableaux |
|
red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 17:03 | |
| J'ai fait un truc de ce genre, mais c'était un tableau affiché avec les noms d'objets et leur image (pomme, biscuit...), et pis deux façons de déplacer (remplacer/insérer), dans un inventaire délimité. Mais bon je suppose que la réussite ici est justement de l'avoir fait avec une liste. (Parce que les tableaux c'est facile, tu le parcours, tu affiches, pour déplacer tu bouge tout d'une case...) > Je viens de regarder et c'est surtout la gestion de la taille personnalisable, scollbar et souris qui est intéressante (toutes les variables pour personnaliser...). Donc oui c'est transposable en tableau, les liste sont juste un peu plus faciles à remplir.
Dernière édition par red-error le Dim 13 Juin 2010 - 21:09, édité 1 fois |
|
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Afficher graphiquement une liste en 3 scripts Dim 13 Juin 2010 - 18:48 | |
| Ok bon finalement c'est relativement caca comme truc, je reprog ça demain ça sera mieux |
|
Contenu sponsorisé
| Sujet: Re: Afficher graphiquement une liste en 3 scripts | |
| |
|