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.
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
