Всем привет. Использую SDL 2.0 под C++. Хочу реализовать нажатие клавиш на клавиатуру.
Есть метод proccessInput, который я вызываю 60 раз в секунду. Но проблема в том, что я проверяю каждую клавишу, а это получается громоздко, как это упростить?
case SDL_KEYDOWN:
if (proccess_Event.key.keysym.sym == SDLK_A)
aIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_B)
bIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_C)
cIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_D)
dIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_E)
eIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_F)
fIsDown = true;
...
Вся функцияvoid Input::processInput()
{
SDL_PollEvent(&proccess_Event);
switch (proccess_Event.type)
{
case SDL_QUIT:
SDL_DestroyWindow(g_window);
SDL_Quit();
exit(0);
break;
case SDL_KEYDOWN:
if (proccess_Event.key.keysym.sym == SDLK_A)
aIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_B)
bIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_C)
cIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_D)
dIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_E)
eIsDown = true;
if (proccess_Event.key.keysym.sym == SDLK_F)
fIsDown = true;
...
}
}
Благодарю за ответы
P.S
Я нашел похожий пример, но это для GLFW, A HE SDL. Тут все одним boolean-ом
inline bool isKeyDown(int keyNum)
{
return glfwGetKey(window, keyNum) == GLFW_PRESS;
}