Ich habe mich mit den Grundlagen einer Java-Game-Engine beschäftigt und bin an dem Punkt angelangt, an dem ich bereit bin, ein Event Manager-System hinzuzufügen.
Ich weiß theoretisch , was ein Event Manager tun sollte: Erlauben Sie Objekten, sich für bestimmte Ereignisse zu "registrieren", und senden Sie das Ereignis an die "registrierten" Listener, wenn der Event Manager über ein Ereignis benachrichtigt wird. Ich bin ratlos darüber, wie ich mit der Implementierung beginnen soll.
Ich konnte online nichts über die Implementierung eines Ereignissystems von Grund auf finden. Daher suche ich nach Informationen zu den Best Practices in diesem Fall - was ich tun sollte und was nicht .
Ist es zum Beispiel wirklich notwendig, dass jedes meiner Spielobjekte ein EventManager
Feld hat? Da alle meine Spielobjekte von einer einzelnen abstrakten übergeordneten Klasse erben, sollte ich in der Lage sein, eine statische Referenz zu verwenden, damit nur eine Instanz des Event Managers von allen Spielobjekten gemeinsam genutzt wird. Mit dem Applet mache ich etwas Ähnliches, mit dem ich bereits jedes Objekt rendere.
Ich nehme an, ich müsste für jedes mögliche abonnierte Ereignis eine Art Sammlung verwalten - Spielobjekte nach Bedarf hinzufügen und aus der Liste entfernen. Ich denke, es sollte möglich sein, eine Warteschlange mit Ereignissen zu erstellen, die gesendet werden müssen. In diesem Fall könnte ich einfach "EventManager.Update ()" zur Hauptspielschleife hinzufügen und die Update()
Methode die Ereignisse senden lassen, die am Ende aufgetreten sind jedes Rahmens. Schließlich hätte jedes Objekt eine HandleEvent(Event e)
Methode, die es dann analysieren und entsprechend beantworten könnte.
Klingt dies nach der richtigen Richtung für die Implementierung eines solchen Systems, oder bin ich weit vom Kurs entfernt und / oder vermisse etwas ganz Offensichtliches?