Klasy abstrakcyjne, wskaźniki do obiektów
Ostatnio zmodyfikowano 2015-11-14 18:12
qest43 Temat założony przez niniejszego użytkownika |
Klasy abstrakcyjne, wskaźniki do obiektów » 2015-11-14 13:44:14 Jeżeli mam np. stworzoną klasę główną:
Animacja Od niej dziedziczą: Animacja chodu, animacja umierania, animacja strzału.
Mam stworzony std::vector <std::unique_ptr <animation="<Animation"> > animation; No i teraz przykładowo chcę się ruszyć graczem i klikam A-D więc powinna uruchomić się metoda update obiektu Animacja Chodu. Gdy umiera to znowu animacja umierania. No ale jeżeli ładuje te obiekty do vectora to nie mogę się bezpośrednio do nich odwoływać, co zrobić w takiej sytuacji?
Mam taki pomysł by do każdego typu animacji dodać std::String animationType; i potem if(A is pressed) if(animation[i].getType() == "MoveAnimation")...
Albo po prostu nie tworzyć tego w vectorze tylko tworzyć osobne instancje MoveAnimation moveAnimation itd. |
|
j23 |
» 2015-11-14 14:56:20 Możesz zrobić tak jak piszesz, tylko zamiast stringów użyj wartości typu wyliczeniowego (enum). |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2015-11-14 15:08:22 Jak to umieścić z enum, bo nie za bardzo wiem. stworzyć osobny plik z tymi typami enum, czy stworzyć jeden w klasie Animation i Entity, czy jak? |
|
michal11 |
» 2015-11-14 16:00:52 |
|
notabigthreat |
» 2015-11-14 16:06:00 A może wsadź tą animację do vectora dopiero, gdy gracz naciska odpowiedni klawisz? Przecież nie ma animacji chodzenia, jeśli postać nie chodzi. |
|
j23 |
» 2015-11-14 18:12:03 Nie umieścić z enum, tylko użyć typu wyliczeniowego zamiast porównywać stringi, co w tym przypadku jest kompletnie bez sensu. enum ANI_TYPE { moveAnimation = 1, };
class MoveAnimation { ... ANI_TYPE getType() const { return moveAnimation; } };
...
if( animation[ i ].getType() == moveAnimation ) {...} |
|
« 1 » |