Barre de raccourcis d'objets

Répondre
Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Barre de raccourcis d'objets

Message par TonyFlow »

J'ai travaillé cette semaine sur la nouvelle barre d'objets qui avait été introduite sur le svn.

Plusieurs bugs ont pu être corrigés et des améliorations apportées, tant au niveau fonctionnel qu'à l'affichage. J'ai donc actuellement une version qui marche bien et me semble complète, sans problème à ma connaissance, qui devrait être remontée sous peu sur le svn (sauf avis contraire :p).

Dans le lot de modifications, je profite de ce message pour préciser quelques points :
  • Réorganisation du code concernant cette nouvelle barre rapide d'objets

    La barre d'origine, simple vue du sac, est gérée dans le fichier hud.c. Puisque cette nouvelle barre diffère considérablement de l'originale et afin d'y voir plus clair dans le code du client, son code est maintenant défini dans de nouveaux fichiers : fr_quickitems.c et fr_quickitems.h

    Celà rend moins volumineux le fichier hud.c où toutes les fonctions concernées étaient de toute manière entièrement dupliquées. Tous les noms de fonctions et variables ont été redéfinis avec la base "fr_quickitems" en suivant le même modèle que les autres parties du code du client. Seules quelques variables globales gardent le nom de la quickbar d'origine quand ils sont souvent repris ailleurs dans le code (quickbar_win, quickbar_relocatable, _x, _y...).

    Je pense que celà ne peut que favoriser le développement de cette nouvelle barre.
    Au passage, les #ifdef se font sur FR_QUICKITEMS au lieu de FR_BARRE_RAPIDE
  • Modification de certaines actions et raccourcis

    La gestion des déplacements de la barre se faisait avec le clic-gauche, ce qui créé des conflits avec l'utilisation des items placés sur la barre (en gros il valait mieux trouver une case libre pour les utiliser). Pour cette raison, ces raccourcis sont maintenant avec le clic droit :
    - CTRL + clic droit : rendre la barre "flottante" (déplaçable) ou non
    - Shift + clic droit : changer l'orientation de la barre (horizontale/verticale)
    - CTRL + Shift + clic droit : remettre la barre dans son état par défaut
    De plus, j'ai rendu la rotation possible même si la barre n'est pas flottante, voyant peu de raison à cette contrainte.

    Les actions suivantes sur les raccourcis de la barre ont été inversés :
    - CTRL + clic gauche : supprime le raccourci pour cet item
    - Shift + clic gauche : dépose l'intégralité de cet item au sol
    Le raccourci avec CTRL me parait trop accessible pour une telle action (lacher au sol) surtout qu'il n'y a la aucune protection par double-clic en place (à ajouter ?). Et l'usage de CTRL pour supprimer un raccourci me parait cohérent (cf la suppression des marques).

    L'annulation d'un "drag" est facilité : il est souvent pénible d'avoir "pris" un objet (avec l'image restant sous le curseur de la souris) et de ne pouvoir le relacher facilement... A présent, un clic droit sur la barre de raccourci annulera l'objet en cours de déplacement. Il en est de même en appuyant sur la touche Echap pour relacher tout objet pris de l'inventaire comme du dépot.
  • Utilisation de la barre rapide d'objets

    Rien de bien particulier... Un raccourci est créé en lachant un objet dans une case vide, si un raccourci existait déjà pour cet objet alors il sera déplacé. Par contre, il est à présent possible de lacher un objet sur une case déjà occupée : le raccourci déjà en place sera déplacé vers la première case vide (s'il en reste) pour permettre au nouveau raccourci de prendre sa place.
Au niveau du code, seul le champs "quantity" est mis à -1 lorsqu'une case est libre. On ne s'occupe pas des autres champs, c'est inutile à partir du moment où tous les tests doivent se faire sur la quantité. Ceci est cohérent avec le reste du code du client où seule la quantité est utilisée pour vider un emplacement (attention néanmoins : en général 0=vide, mais ce n'est pas le cas ici, 0 est valable donc -1=vide).

La taille max de la barre de raccouci (taille du tableau) est maintenant définie dans une constante qui lui est propre : FR_QUICKITEMS_MAXSIZE. Une autre constante DEF_QUICKBAR_DIM contient la taille d'une case (hors cadre). Tous les calculs concernant l'affichage de la barre sont basés dessus ce qui peut permettre facilement de modifier la dimension des icones.

Bon, je crois avoir précisé l'essentiel ;)
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Barre de raccourcis d'objets

Message par Ackak »

- Pour la réorganisation, tu peux très bien rajouter 2 fichiers, cela ne pose pas de problème majeure. Je fais juste attention de garder le code le plus proche possible de la version US, car s'ils font des modifications qui peuvent nous intéresser, cela devient plus simple à gérer. Donc ce n'est pas un point à négliger vu que les 2 codes deviennent de plus en plus distants.
Pour le nom du flag, si tu préfère un nom anglais pourquoi pas, même si je ne vois pas l'intérêt de changer l'actuel :-)
(Pareil le fait d'avoir des noms français permet lors des fusions de codes de gagner du temps)

- Pour les modifications d'actions, de raccourcis et l'utilisation cela me semble plutôt de très bon ajouts. Reste plus qu'à tester.
Au niveau du code, seul le champs "quantity" est mis à -1 lorsqu'une case est libre. On ne s'occupe pas des autres champs, c'est inutile à partir du moment où tous les tests doivent se faire sur la quantité. Ceci est cohérent avec le reste du code du client où seule la quantité est utilisée pour vider un emplacement.
Personnellement je préfère tout supprimer, cela me semble plus propre et ne demande pas beaucoup de code supplémentaire.
La taille max de la barre de raccouci (taille du tableau) est maintenant définie dans une constante qui lui est propre : FR_QUICKITEMS_MAXSIZE. Une autre constante DEF_QUICKBAR_DIM contient la taille d'une case (hors cadre). Tous les calculs concernant l'affichage de la barre sont basés dessus ce qui peut permettre facilement de modifier la dimension des icones.
Donc si je comprends bien la barre peut avoir 8 objets d'enregistrés, mais que 6 d'affichés ? Et donc si j'augmente la barre de 2 cases, j'aurais directement les 8 objets ? Si c'est bien ca, rien à dire, c'est impeccable.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Barre de raccourcis d'objets

Message par TonyFlow »

Je suis conscient de l'intéret de rester proche du code de la version US, justement ajouter 2 fichiers à part me semble judicieux dans ce cas, car cette barre s'éloigne de la barre d'origine alors autant mettre son code dans un coin. La comparaison du fichier hud.c entre LE et EL en sera facilité ;)

Pour le nommage.. oui j'aime bien quickitems, ça va bien avec qui quickspells ^^. Et pour bien repérer nos modifs, je laisse par contre le FR en préfixe. Changer les noms français qui existaient m'a aussi un peu aidé pour effectué ma réorganisation de code. Au final, on garde un ensemble de nom cohérent, une recherche sur fr_quickitems fait bien ressortir toutes les variables et fonctions propre à cette nouvelle barre.

Pour les cases libres, si ça ne coute pas grand chose de tout remettre à zero (ou -1 ^^), j'ai trouvé que ça pouvait aussi semer de la confusion... J'ai trouvé plus clair de baser les tests sur un seul champs, aucun autre, donc pas d'hésitation. Surtout comme je le disais que tout le reste du code fonctionne sur ce principe.


PS: si vous avez déjà lancé le client svn, il est recommandé de supprimer le fichier mémorisant la barre (barre_inventaire_pseudo.dat) ou bien ne vous étonnez pas d'en avoir une bizarrement remplie
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Barre de raccourcis d'objets

Message par Ackak »

Je suis conscient de l'intéret de rester proche du code de la version US, justement ajouter 2 fichiers à part me semble judicieux dans ce cas, car cette barre s'éloigne de la barre d'origine alors autant mettre son code dans un coin. La comparaison du fichier hud.c entre LE et EL en sera facilité
Sauf que dans 6 mois s'ils font une correction de bug, une amélioration etc. de certaines fonctions j'aurais oublié qu'on ne les utilise plus et donc je ne vais pas regarder dans nos fichiers si on a besoin de ce genre de modifs. Si pour chaque grosse modif on fait un fichier séparé, j'ai peur que cela soit impossible à suivre dans le future.
Pour les cases libres, si ça ne coute pas grand chose de tout remettre à zero (ou -1 ^^), j'ai trouvé que ça pouvait aussi semer de la confusion... J'ai trouvé plus clair de baser les tests sur un seul champs, aucun autre, donc pas d'hésitation. Surtout comme je le disais que tout le reste du code fonctionne sur ce principe.
Tout à fait d'accord que l'on doit se baser sur ce seul champs, mais je pense juste à une modification future qui ne le ferait pas sur celui-là et qui pourrait poser des soucis.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Barre de raccourcis d'objets

Message par TonyFlow »

Ackak a écrit :Sauf que dans 6 mois s'ils font une correction de bug, une amélioration etc. de certaines fonctions j'aurais oublié qu'on ne les utilise plus et donc je ne vais pas regarder dans nos fichiers si on a besoin de ce genre de modifs. Si pour chaque grosse modif on fait un fichier séparé, j'ai peur que cela soit impossible à suivre dans le future.
C'est vrai, mais pour ce cas... je pense que le contenu des fonctions n'a déjà plus grand rapport vu les différences entre l'ancienne barre et la nouvelle et il est probable (souhaitable ?) qu'elles divergent encore davantage dans le futur. Du coup une modif de l'US sur l'ancienne a peu de chance de devoir être répercutée sur notre nouvelle barre.

En gros, j'ai estimé que cette nouvelle barre pouvait être vu comme un nouvel objet à part entière. On pourrait même imaginer faire coexister l'ancienne, simple courte vue du sac, et la nouvelle. Il suffirait de dédoubler les quelques variables que j'ai laissé communes, pour ne pas trop compliquer les choses, jugeant actuellement cette possibilité peu utile ^^.

Puis sinon, facile de voir que les anciennes fonctions ne sont plus utilisées puisque tout se retrouve dans un gros bloc #ifndef, la fusion est même plus simple sans nos bouts de code au milieu :D.

PS: puis de toute façon, comme en fait je sais pas vraiment programmer en C, mon code ça reste souvent de la recopie adaptée :') Enfin j'essaie aussi de faire à l'idendique pour mieux s'y retrouver, à commencer par moi-même (alors que parfois... j'avoue ça démange de réécrire des trucs car leur code est parfois très moche >< faut respirer et fermer les yeux... le dur prix à payer pour bénéficier des fusions !)
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
Hermitek
Messages : 253
Inscription : 23 août 2007, 03:43
Localisation : plus de six pieds sous terre

Re: Barre de raccourcis d'objets

Message par Hermitek »

Les actions suivantes sur les raccourcis de la barre ont été inversés :
- CTRL + clic gauche : supprime le raccourci pour cet item
- Shift + clic gauche : dépose l'intégralité de cet item au sol
Le raccourci avec CTRL me parait trop accessible pour une telle action (lacher au sol) surtout qu'il n'y a la aucune protection par double-clic en place (à ajouter ?). Et l'usage de CTRL pour supprimer un raccourci me parait cohérent (cf la suppression des marques).
Je n'ai pas eu l'occasion d'utiliser cette nouvelle barre de raccourcis, mais je milite pour une cohérence avec la fenêtre d'inventaire :
Dans la fenêtre actuelle, un CTRL + clic gauche = dépose l'intégralité de cet item au sol.

Si l'on change l'un, alors que l'on change aussi l'autre (ce sera plus facile de changer ses "habitudes" si ça reste cohérent :wink: )

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Barre de raccourcis d'objets

Message par TonyFlow »

Ah vi bien sur Hermitek ! En fait je connaissais pas vraiment ce raccourci avant et je n'ai pas pensé qu'on le retrouvait surement avec l'inventaire également.

Quelque part, j'irai même plus loin : un tel raccourci pour déposer toute une case au sol est-il vraiment utile ?

L'action n'est pas anodine... la faire par erreur peu toujours être assez facheux... a-t'elle vraiment un intéret ?
Je ne sais pas les habitudes de chacun, mais je trouve pour ma part que les occasions sont rares. Du coup, à comparer le besoin et le risque, pas sur que celà mérite un raccourci de ce genre !

Surtout que les raccourcis, c'est bien, mais plus y'en a et moins on s'y retrouve... et avec cette action c'est pas top de se mélanger.
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Barre de raccourcis d'objets

Message par Ackak »

Dans l'ancienne version de cette barre, il était possible au joueur de définir le nom de cases avant que le client crée un espace et la largeur en pixel de cette espace. Il me semble important d'avoir de nouveau cette option, cela permettant aux joueurs une plus grande maîtrise de la disposition de son écran.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Ackak
Messages : 7348
Inscription : 18 déc. 2005, 19:31

Re: Barre de raccourcis d'objets

Message par Ackak »

Je n'ai jamais eu de "plaintes" quant à ce raccourcis, donc ce serait dommage de totalement le supprimer.
Celui qui apprend quelque chose de moi enrichit son savoir sans réduire le mien, tout comme celui qui allume sa chandelle à la mienne se donne de la lumière sans me plonger dans l'obscurité.
-- Thomas Jefferson

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Barre de raccourcis d'objets

Message par TonyFlow »

Sur la dernière version du svn :
  • La fonction de lacher au sol d'un objet est conservée sur la fenêtre de l'inventaire, par contre elle passe elle aussi de Ctrl+clic gauche à Shift+clic gauche sur l'objet pour être cohérente avec la barre rapide
  • Le raccourci Ctrl+clic gauche devenant libre sur les objets de l'inventaire, à présent celà tentera de le placer en raccourci dans la barre rapide (à la 1ère place possible, il sera déplacé s'il était déjà présent plus loin dans la barre)
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

Re: Barre de raccourcis d'objets

Message par TonyFlow »

Bon j'ai à nouveau déplacé le raccourci permettant de déposer au sol l'objet cliqué ! Cette fois il se retrouve rétrogradé sur la combinaison Ctrl+Shift+clic gauche :twisted:

Ca limite les risques de lacher ses affaires par erreur et puis ça me libère le raccourci Shift+clic pour une action peut-être un peu plus utile et moins "dangereuse" : à présent sur un objet de l'inventaire ou de la barre rapide, Shift+clic gauche le rangera dans le dépot si celui-ci est ouvert (en prenant la quantité max, un "tout déposer" juste pour cet objet donc).
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Répondre