Je me suis frayé un chemin avec les bases d'un moteur de jeu Java et j'ai atteint le point où je suis prêt à ajouter un système de gestionnaire d'événements.
Je sais, en théorie , ce qu'un gestionnaire d'événements devrait faire: permettre aux objets de "s'inscrire" pour certains événements, et chaque fois que le gestionnaire d'événements est informé d'un événement, diffuser l'événement aux auditeurs "enregistrés". Ce que je suis perplexe, c'est comment commencer à le mettre en œuvre.
Je n'ai pas pu trouver quoi que ce soit, en ligne, sur la mise en œuvre d'un système d'événements à partir de zéro, donc je cherche des informations sur les meilleures pratiques dans ce cas - ce que je dois et ne dois pas faire.
Par exemple, est-il vraiment nécessaire que chacun de mes objets de jeu ait un EventManager
champ? Étant donné que tous mes objets de jeu héritent d'une seule classe parent abstraite, je pense que je devrais pouvoir utiliser une référence statique afin qu'il n'y ait qu'une seule instance du gestionnaire d'événements, partagée entre tous les objets de jeu. Je fais quelque chose de similaire, avec l'applet, que j'utilise pour rendre chaque objet, déjà.
Je suppose que je devrais maintenir une collection quelconque pour chaque événement souscrit possible - ajouter et supprimer des objets de jeu de la liste, au besoin. Je pense qu'il devrait être possible de faire une file d'attente d'événements qui doivent être diffusés, auquel cas je pourrais simplement ajouter "EventManager.Update ()" à la boucle de jeu principale, et avoir la Update()
méthode pour diffuser les événements qui se sont produits à la fin de chaque image. Enfin, chaque objet aurait une HandleEvent(Event e)
méthode, qu'ils pourraient ensuite analyser et répondre de manière appropriée.
Cela ressemble-t-il à la direction appropriée vers la mise en œuvre d'un tel système, ou suis-je loin de la voie et / ou manque quelque chose de tout à fait évident?