Etendre les possibilités de déplacement d'objet
Publié : 27 mars 2010, 12:15
J'ai effectué des modifications sur le client svn afin d'améliorer les possibilités de déplacement d'objets que l'on effectue par drag & drop ou double-clic (essentiellement au sein de l'inventaire ou avec le dépot). Disponible en activant FR_SWAPITEMS à la compilation (fichier make.default du svn mis à jour avec la balise activée).
Pour info, je détaille ici les différents cas possibles et le nouveau comportement du client. Rassurez-vous si le détail point par point semble un peu lourd, au final tout doit être relativement intuitif. Ce sont surtout des contraintes en moins lors des déplacements des objets à la souris
Déplacement d'un objet provenant du sac (inventaire non équipé)...
Déplacement d'un objet de l'inventaire équipé...
Déplacement d'un objet du dépot...
Note : Quelques exceptions lorsque l'opération nécessite de déséquiper un objet empilable (cas actuellement rare, à ma connaissance seuls os et branche sont possibles). Il n'est alors pas possible de procéder aux échanges de places (car on ne peut savoir avec exactitude l'emplacement d'un objet empilable déséquipé, le serveur décidant lui-même où le mettre si un empilement est possible). Celà pourrait être envisager avec le support des item_uid.
Pour info, je détaille ici les différents cas possibles et le nouveau comportement du client. Rassurez-vous si le détail point par point semble un peu lourd, au final tout doit être relativement intuitif. Ce sont surtout des contraintes en moins lors des déplacements des objets à la souris

Déplacement d'un objet provenant du sac (inventaire non équipé)...
- sur un autre objet du sac :
- s'il y a une case dispo dans le sac
> échange des places effectué automatiquement - sur un autre objet équipé :
- si l'option de changement d'équipement est activée
- s'il y a une case dispo dans le sac
> l'objet équipé est placé dans le sac pour que l'autre soit mis à sa place
(jusque là, comportement inchangé)
+ à condition que l'objet équipé ne soit pas empilable
> alors l'objet déséquipé est remis à la place qu'occupait l'objet équipé - sur lui-même (considéré comme un double-clic) :
- aucun changement dans ce cas
> l'objet sera équipé vers la première case d'équipement vide
Déplacement d'un objet de l'inventaire équipé...
- sur une case quelconque du sac :
- aucun changement dans ce cas
> l'objet sera déséquipé vers la case indiquée si elle est libre
> ou sinon vers la première case vide du sac - sur lui-même (considéré comme un double-clic) :
- on tente de déséquiper l'objet
> cf le cas précédent - sur une autre case libre d'équipement :
- s'il y a une case dispo dans le sac
> l'objet équipé est déplacé dans le sac pour être rééquipé à la place voulue - sur une autre case d'équipement occupée :
- s'il y a deux cases dispo dans le sac
> les deux objets équipés seront déplacés dans le sac
> pour ensuite être remis chacun à la place de l'autre dans les équipements - sur une case du dépot :
- s'il y a une case dispo dans le sac
> l'objet sera déséquipé puis rangé dans le dépot
Déplacement d'un objet du dépot...
- sur une case d'équipement dans l'inventaire :
- s'il y a une case dispo dans le sac
- s'il y a une case dispo dans les équipements
> l'objet sera placé dans le sac puis équipé dans la case indiquée
> ou si celle-ci est occupée dans la première case d'équipement libre - sur lui-même (considéré comme un double-clic) :
> l'objet sera ajouté dans le sac avec la quantité sélectionnée
(équivalent à un laché dans l'inventaire, mais sans avoir à déplacer la souris)
Note : Quelques exceptions lorsque l'opération nécessite de déséquiper un objet empilable (cas actuellement rare, à ma connaissance seuls os et branche sont possibles). Il n'est alors pas possible de procéder aux échanges de places (car on ne peut savoir avec exactitude l'emplacement d'un objet empilable déséquipé, le serveur décidant lui-même où le mettre si un empilement est possible). Celà pourrait être envisager avec le support des item_uid.