Je recherche une solution pour un comportement "Options de clic droit".
Fondamentalement, chaque élément d'un jeu, lorsqu'il est cliqué avec le bouton droit, peut afficher un ensemble d'options en fonction de l'objet.
Exemples de clic droit pour différents scénarios :
Inventaire: le casque affiche les options (équiper, utiliser, déposer, description)
Banque: le casque affiche les options (Take 1, Take X, Take All, Description)
Étage: le casque affiche les options (prendre, marcher ici, description)
De toute évidence, chaque option pointe en quelque sorte vers une certaine méthode qui fait ce qui est dit. Cela fait partie du problème que j'essaie de comprendre. Avec autant d'options de potention pour un seul article, comment pourrais-je avoir mes classes conçues de manière à ne pas être extrêmement désordonnées?
- J'ai pensé à l'héritage mais cela pourrait être très long et la chaîne pourrait être énorme.
- J'ai pensé à utiliser des interfaces, mais cela me limiterait probablement un peu car je ne serais pas en mesure de charger les données d'élément à partir d'un fichier Xml et de les placer dans une classe générique "Élément".
Je fonde mon résultat final souhaité sur un jeu appelé Runescape. Chaque objet peut être cliqué avec le bouton droit dans le jeu et selon ce qu'il est et où il se trouve (inventaire, sol, banque, etc.) affiche un ensemble différent d'options disponibles pour le joueur avec lequel interagir.
Comment pourrais-je y parvenir? Quelle approche dois-je adopter pour tout d'abord, décider quelles options DEVRAIENT être affichées et une fois cliqué, comment appeler la méthode correspondante.
J'utilise C # et Unity3D, mais aucun des exemples fournis ne doit être lié à l'un ou l'autre car je suis après un modèle par opposition au code réel.
Toute aide est très appréciée et si je n'ai pas été clair dans ma question ou les résultats souhaités, veuillez poster un commentaire et je m'y attacherai dès que possible.
Voici ce que j'ai essayé jusqu'à présent:
- J'ai en fait réussi à implémenter une classe "Item" générique qui contient toutes les valeurs pour différents types d'objets (attaque supplémentaire, défense supplémentaire, coût etc ...). Ces variables sont remplies par les données d'un fichier Xml.
- J'ai pensé à placer toutes les méthodes d'interaction possibles à l'intérieur de la classe Item mais je pense que c'est une forme incroyablement désordonnée et pauvre. J'ai probablement adopté la mauvaise approche pour implémenter ce type de système en utilisant uniquement une seule classe et non une sous-classification dans différents éléments, mais c'est la seule façon de charger les données à partir d'un fichier XML et de les stocker dans la classe.
- La raison pour laquelle j'ai choisi de charger tous mes articles à partir d'un fichier Xml est due au fait que ce jeu a la possibilité de plus de 40000 articles. Si mes calculs sont corrects, une classe pour chaque élément est un grand nombre de classes.