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 Dying
Ereignis, HitPointsSystem
das 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 Dying
Ereignis 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 HitPoints
die das noch sterben kann.
Ich habe ein Missile
in meinem Spiel, das es nicht hat HitPoints
, aber es kann ausgewählt werden und es kann sterben. Wenn a Missile
ausgewählt ist, erkennt meine Benutzeroberfläche, dass es kein Ereignis HitPoints
hat und daher auch kein Dying
Ereignis, 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 , HitPoints
um das Missile
und alles wäre in Ordnung, aber meine KI - System sieht für feindlichen Targeting , HitPoints
weil 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 Dying
Ereignis? 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?
Removing
Veranstaltung brauchen ? Wohin geht das? Ich habe keine Entity
Klasse.