[SFML]
Hej, mam problem, z którym nie potrafię sobie poradzić.
Zrobiłem klasę, która dziedziczy po Drawable i może być rysowana. Chciałbym móc tworzyć obiekt tej klasy w sposób dynamiczny, a gdy nie będzie mi on już potrzebny usunąć go. Dla uproszczenia przyjmijmy, że jest to gra, w której sterujemy ludzikiem, który jest nekromantą i ma moc przywoływania nieumarłych. Jeśli rzucimy magiczne zaklęcie, z ziemi wyrasta wampir (dynamicznie tworzymy obiekt). Ten wampir jest obiektem naszej klasy. Jeśli wampir wejdzie w nasłonecznione miejsce ma natychmiastowo zostać zniszczony (niszczymy nasz dynamiczny obiekt).
Mam problem jak się do tego zabrać. W pętli gry zrobię sobie warunek,np. jeśli wciśniesz F1 to przyzwij wampira:
if (event.type == Event::KeyReleased && event.key.code == Keyboard::F1)
Wampir *wampir = new Wampir;
Tylko jak teraz go narysować?
_window->draw(*wampir);
To nie ma prawa zadziałać, dlatego zrobiłem dodatkowy wskaźnik i zmienną w głównej klasie:
Dialog *_dialog;
bool exist = false;
Wówczas:
if (event.type == Event::KeyReleased && event.key.code == Keyboard::F1)
{
Dialog *dialog = new Dialog;
_dialog = dialog;
exist = true;
}
if(exist) _window->draw(*_dialog);
else if (event.type == Event::KeyReleased && event.key.code == Keyboard::F2)
{
exist = false;
delete _dialog;
}
Wtedy to działa, ale drażni mnie to, że musiałem stworzyć dodatkową zmienną i wskaźnik i za każdym razem, kiedy będę chciał użyć obiektu wampir lub jego metody muszę sprawdzać if (exist). Wydaje mi się, że źle to robię i jest na to jakiś sposób. Bo wyobrażam sobie, że mam grę w której może być sto różnych dynamicznych obiektów i wtedy do każdego obiektu robić wskaźnik i zmienną exist, a potem sprawdzać za każdym razem czy exist == true to by była jakaś masakra.
Zatem moje pytanie, jak za takie coś zabrać prawidłowo?