I have a simple 2-D breakout clone. It works fine, except for one bug.
If I move mouse over game window, it will get input from mouse(mouse movement), and event queue will instantly be flooded with this input. For example, if player pressed left arrow, but moved his mouse over a window before, he will have to wait enough frames for mouse events to get processed. Is there a way to ignore mouse event? At least these movement ones. Everything is okay when mouse doesn't move, but after it moves it's terrible.
I'm using SDL 2.0, programming on Debian-based linux. Using C++.
Code for handling events looks like this(requested):
void gameEngine::HandleEvents()
{
if( SDL_PollEvent(&gameEvent) != 0 )
{
HandleEngineEvents();
gameLevel.HandleEvents(gameEvent);
}
}
HandleEngineEvents() :
void gameEngine::HandleEngineEvents()
{
if( gameEvent.type == SDL_QUIT)
{
running = false;
}
else if( gameEvent.type == SDL_KEYDOWN && gameEvent.key.repeat == 0 )
{
if( gameEvent.key.keysym.sym == SDLK_ESCAPE )
{
running = false;
}
}
}
Level::HandleEvents() :
void Level::HandleEvents(SDL_Event& gameEvent)
{
player.HandleEvents(gameEvent);
}
Player::HandleEvents() :
void Player::HandleEvents(SDL_Event& gameEvent)
{
if(gameEvent.type == SDL_KEYDOWN && gameEvent.key.repeat == 0)
{
switch(gameEvent.key.keysym.sym)
{
case SDLK_RIGHT:
velocity += 1;
break;
case SDLK_LEFT:
velocity -= 1;
break;
default:
break;
}
}
else if(gameEvent.type == SDL_KEYUP && gameEvent.key.repeat == 0)
{
switch(gameEvent.key.keysym.sym)
{
case SDLK_RIGHT:
velocity -= 1;
break;
case SDLK_LEFT:
velocity += 1;
break;
default:
break;
}
}
}