12Fermer14
SasumeLe 25/04/2006 à 20:25
Bon, après réflexion j'ai choisi (pour l'instant) un truc du même genre que ./12, à savoir une liste de listeners qui sont en attente qu'un évènement particulier se produise pour exécuter leur code.
Ces listeners sont stockés dans le gestionnaire d'évènements, qui se charge de regarder à chaque évènement émis s'il existe un listener attendant cet évènement (et le cas échéant appelle la fonction du listener).
Les évènements sont émis par le système de contrôle du personnage : à chaque fois qu'une action est demandée par le joueur (se déplacer, prendre un objet, pousser, appuyer, etc.) celle-ci est transmise au personnage, mais également envoyée au gestionnaire d'évènements sous la forme d'un évènement.
Ceci introduit une limitation : les listeners ont pour condition d'attente des actions du personnage seulement. Donc pour détruire un pont ce n'est pas très adapté.
En fait, pour gérer facilement un évènement du type "pont détruit", il faudrait que je permette aux objets d'envoyer eux aussi des évènements. Mais pour cela, il faudrait soit que j'utilise une fonction globale permettant de "poster" un évènement, soit que je transmette à tous les objets du monde le gestionnaire d'évènements pour qu'ils puisse lui transmettre leurs évènements.
Or je trouve que la première solution n'est pas cohérente avec une modélisation objet et que la deuxième solution est un poil lourde.
Cela dit, je pense que le moteur de jeu serait bien plus flexible si les objets pouvaient envoyer des évènements. Peut-être que je n'ai pas pensé à une solution bien plus commode pour réaliser cela ?