Entitäten in meinem Spiel sind nichts anderes als eine Sammlung von Komponenten, die mit einer Entitäts-ID verknüpft sind. Ich habe (fast) reine Datenkomponenten und Systeme, die mit den Daten arbeiten.
Eine dieser Komponenten ist HitPoints. Es ist eine der wenigen Komponenten, die ein bisschen mehr als nur Daten enthält: Es enthält ein DyingEreignis, HitPointsSystemdas ausgelöst wird, wenn die Trefferpunkte unter 0 fallen. Einer der Ereignis-Listener ist meine Benutzeroberfläche, während eine Entität ausgewählt ist, hört sie zu zum DyingEreignis der aktuellen Auswahl . Bei Tod wird die Entität abgewählt. Wenn Objekte ausgewählt werden, werden kleine Kreise um die Auswahl gezogen. Es funktioniert großartig ... Bis ich eine Entität habe, ohne HitPointsdie das noch sterben kann.
Ich habe ein Missilein meinem Spiel, das es nicht hat HitPoints, aber es kann ausgewählt werden und es kann sterben. Wenn a Missileausgewählt ist, erkennt meine Benutzeroberfläche, dass es kein Ereignis HitPointshat und daher auch kein DyingEreignis, was später dazu führt, dass die Zeichenschleife versucht, eine "ausgewählte" und tote Rakete zu zeichnen , was zu einem Absturz führt.
Man könnte vermuten , dass Sie nur noch hinzufügen könnten , HitPointsum das Missileund alles wäre in Ordnung, aber meine KI - System sieht für feindlichen Targeting , HitPointsweil diejenigen , die einzigen Dinge sind es beschädigen kann. Ich möchte nicht, dass Raketen abgefeuert werden, und ich möchte auch keine Sonderregel hinzufügen.
Also ... wenn alle Entitäten sterben (oder gelöscht werden können), wo platziere ich das DyingEreignis? Soll ich eine neue Komponente erstellen? Entweder eine Komponente für alle Dinge, die sterben können (fast alles), oder eine Komponente für KI-Ziele? Oder gibt es einen besseren Ort für eine Veranstaltung wie diese?
RemovingVeranstaltung brauchen ? Wohin geht das? Ich habe keine EntityKlasse.