Witam!
Pisząc grę napotkałem na trudność w implementacji pauzy. Otóż sam szkielet wygląda u mnie tak:
Mam klasę Engine, a w niej metodą obsługującą rozgrywkę:
void Engine::runEngine()
{
srand((unsigned int)time(NULL));
while (!menu)
{
if (_pause)pause_screen();
generator_manager();
event_manager();
update();
draw();
}
}
klikając odpowiedni przycisk zmieniam wartość _pause na true , dalej program idzie do funkcji pause_screen():
void Engine::pause_screen()
{
PauseScreen pauza(_pause,*okno);
pauza.runPause();
}
i w funkcji PauseScreen::runPause() mam pętle obsługującą pauzę wykonującą się dopóki nie przestawie zmiennej_pause na false którą przesyłam przez referencję.
Problem jaki napotkałem to, że pomimo tego, że teoretycznie program powinien wykonywać tylko pętlę pauzy, to obiekty którymi poruszam w metodzie Engine::update() , zmieniają swoją pozycję (nie widać tego dopóki nie wyjdę z pętli pauzy ale po wyjściu ich pozycja jest taka, jakby poruszały się przez okres trwania pauzy).
Pierwsze pytanie jakie zadaję to dlaczego tak się dzieje ( domyślam się, że może chodzić o wątki o których nie mam bladego pojęcia). Drugie pytanie to jak zrealizować pauzę, stworzyć nowe okno? Może użyć RenderTexture??
kodzik:
http://www44.zippyshare.com/v/UiJKp1Pk/file.html