Les systèmes d'événements sont incroyables, ils rendent le code extrêmement difficile à apprivoiser et permettent vraiment la création dynamique de jeux grâce à une communication facile des objets et de la boucle de jeu. J'ai du mal avec l'efficacité de ma mise en œuvre actuelle. Actuellement, ma légère optimisation de la séparation des listes d'objets dans les événements auxquels ils répondent a fait des merveilles, mais je devrais faire plus.
Actuellement, j'ai deux méthodes:
Le plus simple: tous les objets sont ajoutés à un vecteur lorsqu'un événement est envoyé tous les objets sont envoyés à l'événement via sa méthode handle_event ()
Plus complexe: j'ai une carte avec chaîne comme clé et int comme valeur. Lorsqu'un type d'événement est ajouté, il est ajouté à cette carte, l'int entier étant simplement incrémenté (il doit y avoir une meilleure façon)
le vecteur de vecteurs d'objets repousse ensuite un nouveau vecteur pour gérer ce type d'événement.
Lorsqu'un événement est appelé, il appelle simplement l'int correspondant dans la mappe eventTypes au type à l'intérieur du vecteur de vecteurs d'objets et envoie cet événement à chaque objet gérant ce type d'événement.
Cette première méthode est assez lente (évidemment) pour beaucoup d'objets, mais assez rapide pour très peu d'objets. Alors que la deuxième méthode est assez rapide avec des objets volumineux qui souhaitent gérer différents types d'événements, mais plus lente que la première méthode par objet avec des objets gérant le même type d'événement.
Existe-t-il un moyen plus rapide (au niveau de l'exécution)? Existe-t-il un moyen plus rapide de rechercher un entier dans le type de chaîne? (Au départ, j'avais une énumération, mais elle n'autorisait pas les types personnalisés, qui sont nécessaires en raison du niveau de dynamisme souhaité.)