Kolejność polimorifcznych rendererów

Kolejność polimorifcznych rendererów
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10234
0

Piszę sobię amatorską grę, język nie jest istotny (java, fyi).

Mam około 30 klas postaci (polimorifczne, implementują interface Actor). Actor ma metode getRenderer(), która zwraca polimorficzny renderer (po jednym dla każdej klasy) implementujący interface ActorRenderer. Niektóre postaci zawsze mają być nad innymi. Na razie wszystko trzymam w List<Actor>. Kolejność dodania postaci do tej listy jest niedeterministyczna i zależy od przebiegu gry. Jedyny pomysł jaki mam to dodać do ActorRenderer metodę getOrder(), a potem:

Kopiuj
List<Actor> actors;

actors.stream()
    .map(Actor::getActorRenderer)
    .sorted(comparing(ActorRenderer::getOrder)
    .forEach(renderer -> renderer.render(canvas));

Ale niewydaje mi się to sensowne przez to że będę musiał pamiętać o tych intach pochowanych w róznych implementacjach.

Any ideas?

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Interfejs Comparable możesz zaimplementować i będzie bardziej OOP :] Aczkolwiek będzie spory narzut, bo compareTo ma zwrócić 0 tylko jak obiekty są równe, a nie tylko mają równe warstwy.

Poza tym, jeśli masz kilka warstw i chcesz uniknąć sortowania to możesz zrobić np mapę z numeru warstwy do listy aktorów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.