Post by CodeCat on Jun 15, 2015 13:41:44 GMT -5
// private
void Engine::HandleEvents()
{
bool diditmove = false;
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYUP:
{
//Strange issue. switch causes it to not recognize when I release a key
//unless I release a different key from the one in the case. Why?
//Look into switch more.
switch (event.key.keysym.sym)
{
case SDLK_RETURN:
{ m_input_manager->keyCheck(SDLK_RETURN);
break; }
}
//case SDLK_UP:
//case SDLK_w:
case SDLK_SPACE:
{ m_input_manager->action = SDLK_1;
}
case SDLK_LEFT:
case SDLK_a:
{ if (m_input_manager->movement == SDLK_LEFT)
{ m_input_manager->movement = SDLK_2;
break; } }
case SDLK_RIGHT:
case SDLK_d:
{ if (m_input_manager->movement == SDLK_RIGHT)
{ m_input_manager->movement = SDLK_2;
break; } }
}
case SDL_KEYDOWN:
{
switch (event.key.keysym.sym)
{
//If Esc is pressed, the game ends.
//If Enter is pressed, the game will be paused/unpaused.
case SDLK_ESCAPE:
{ m_running = false;
break; }
//case SDLK_UP:
//case SDLK_w:
case SDLK_SPACE:
{
//if (m_input_manager->action!=SDLK_2)
m_input_manager->action = SDLK_UP;
}
case SDLK_DOWN:
case SDLK_s:
{ m_input_manager->moving('D');
diditmove = true;
break; }
case SDLK_LEFT:
case SDLK_a:
{ m_input_manager->movement=SDLK_LEFT;
diditmove = true;
break; }
case SDLK_RIGHT:
case SDLK_d:
{ m_input_manager->movement=SDLK_RIGHT;
diditmove = true;
break; }
}
}
if (diditmove == false)
{
m_input_manager->movement=SDLK_1;
}
case SDL_MOUSEMOTION:
m_input_manager->SetMousePosition(event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
{
int index = event.button.button - 1;
if (index < 0)
index = 0;
else if (index > 2)
index = 2;
m_input_manager->SetMouseButton(index, true);
}
break;
case SDL_MOUSEBUTTONUP:
{
int index = event.button.button - 1;
if (index < 0)
index = 0;
else if (index > 2)
index = 2;
m_input_manager->SetMouseButton(index, false);
}
break;
}
}
void Engine::HandleEvents()
{
bool diditmove = false;
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYUP:
{
//Strange issue. switch causes it to not recognize when I release a key
//unless I release a different key from the one in the case. Why?
//Look into switch more.
switch (event.key.keysym.sym)
{
case SDLK_RETURN:
{ m_input_manager->keyCheck(SDLK_RETURN);
break; }
}
//case SDLK_UP:
//case SDLK_w:
case SDLK_SPACE:
{ m_input_manager->action = SDLK_1;
}
case SDLK_LEFT:
case SDLK_a:
{ if (m_input_manager->movement == SDLK_LEFT)
{ m_input_manager->movement = SDLK_2;
break; } }
case SDLK_RIGHT:
case SDLK_d:
{ if (m_input_manager->movement == SDLK_RIGHT)
{ m_input_manager->movement = SDLK_2;
break; } }
}
case SDL_KEYDOWN:
{
switch (event.key.keysym.sym)
{
//If Esc is pressed, the game ends.
//If Enter is pressed, the game will be paused/unpaused.
case SDLK_ESCAPE:
{ m_running = false;
break; }
//case SDLK_UP:
//case SDLK_w:
case SDLK_SPACE:
{
//if (m_input_manager->action!=SDLK_2)
m_input_manager->action = SDLK_UP;
}
case SDLK_DOWN:
case SDLK_s:
{ m_input_manager->moving('D');
diditmove = true;
break; }
case SDLK_LEFT:
case SDLK_a:
{ m_input_manager->movement=SDLK_LEFT;
diditmove = true;
break; }
case SDLK_RIGHT:
case SDLK_d:
{ m_input_manager->movement=SDLK_RIGHT;
diditmove = true;
break; }
}
}
if (diditmove == false)
{
m_input_manager->movement=SDLK_1;
}
case SDL_MOUSEMOTION:
m_input_manager->SetMousePosition(event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
{
int index = event.button.button - 1;
if (index < 0)
index = 0;
else if (index > 2)
index = 2;
m_input_manager->SetMouseButton(index, true);
}
break;
case SDL_MOUSEBUTTONUP:
{
int index = event.button.button - 1;
if (index < 0)
index = 0;
else if (index > 2)
index = 2;
m_input_manager->SetMouseButton(index, false);
}
break;
}
}