Повторный вход в функцию при обработке события

Игрок может поставить игру на паузу: при нажатии клавиши 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. Собственно, вопрос: почему возникает повторный вход без нажатия других клавиш?


Ответы (0 шт):