Повторный вход в функцию при обработке события
Игрок может поставить игру на паузу: при нажатии клавиши ESC рисуется меню-пауза с вариантами продолжить игру или выйти из игры. Считывание нажатия клавиш управления:
while (!active_exit) //Пока не активен флаг выхода из игры
{
...
//Считывание нажатия
SDL_PollEvent (&event);
if (event.type == SDL_KEYDOWN)
switch (event.key.keysym.sym)
{
...
//Если нажат ESC, запускаем меню-паузу
case SDLK_ESCAPE:
{
active_exit = PauseMenu (CurrentPlayer);
} break;
default: {}
}
}
В функции PauseMenu точно так же считываются клавиши и позиция меню; 1 - продолжить, 2 - выйти:
ExitGame = false;
while (!ExitPauseMenu)
{
SDL_WaitEvent (&event);
if (event.type == SDL_KEYDOWN)
switch (event.key.keysym.sym)
{
...
case SDLK_RETURN:
{
switch (CurSection)
{
case 1: ExitPauseMenu = true; break;
case 2:
{
ExitPauseMenu = true;
ExitGame = true;
} break;
}
} break;
case SDLK_ESCAPE: ExitPauseMenu = true; break;
default: {}
}
}
return ExitGame;
Выход из игры через меню-паузу работает, но при выборе секции "Продолжить" или нажатии ESC происходит зацикливание: проходят вычисления в главной функции, затем идут команды считывания нажатия (первый код) и повторно, без ещё каких-либо нажатых клавиш, запускается функция PauseMenu. Собственно, вопрос: почему возникает повторный вход без нажатия других клавиш?