Hallo allerseits,
ich steh mal wieder auf dem Schlauch...
In C&C Generals gibt es 3 Armeen:
- 2 Armeen hatten Bulldozer zum Bauen und Reparieren von Gebäuden.
Für Ressourcen gab es separate Einheiten die sonst keine Funktion hatten.
- 1 Armee hatte Arbeiter zum Bauen und Reparieren von Gebäuden UND war auch für das Sammeln von Ressourcen zuständig.
Wie modelliert man so etwas?
Ich habe eine Klasse
Unit und davon die Klassen
Worker und
Transporter abgeleitet.
Aber je nach Fraktion kann ein
Worker zusätzlich auch ein
Transporter sein, und umgekehrt.
Mit Mehrfachvererbung wären ja grundsätzlich alle
Worker auch
Transporter, aber dann brauch ich auch keine 2 abgeleitete Klassen dafür.
Was übersehe ich hier? Welche Wissenlücke habe ich?
EDIT:
Da ich Unity nutze habe ich überlegt ob man dann nicht einfach beide abgeleitete Klassen als Script anhängt für diesen Fall.
Kann das schon die Lösung sein? Zumindest für Unity?
EDIT 2:
Weiterführende Überlegung vom vorherigen Edit:
Ist es sinnvoll für sämtliche Bereiche einer Klasse separate Komponenten (also Scripte) an die Objekte hängen?
Zum Beispiel für Einheiten und Gebäude einen HealthController zu programmieren der sämtliche Schäden am Objekt steuert (z.B. auch Rüstung, Schild).
Einen MovementController der allen mobilen Einheiten angehängt wird.
Einen WorkerController der allen Einheiten die Bauen und Reparieren können angehängt wird,
einen TransporterController, einen AttackController usw.
Da hätten manche Einheiten eine handvoll Komponenten.
Und beim Auswählen einer Einheite müsste man dann immer prüfen welche der Komponenten diese Einheit besitzt und dementsprechend die Funktion auf dem HUD einblenden oder den Cursor anpassen (angreifen, bewegen, reparieren).
Aber dann bräuchte ich auch keine abgeleiteten Klassen mehr. Da habe ich dann einfach eine Unit Klasse mit x Komponenten die bestimmen was die Klasse kann.
Wie macht man sowas "richtig"?