Exemplo n.º 1
0
void
MouseButton::mouse_handler(const SDL_Event& event, void* userdata)
{
  if (event.type != SDL_MOUSEBUTTONDOWN && event.type != SDL_MOUSEBUTTONUP)
    return;

  MouseButton* mb = (MouseButton*)userdata;
  switch (mb->button)
  {
    case 1:
      if (event.button.button == SDL_BUTTON_LEFT) {
        if (event.button.state == SDL_PRESSED) {
          mb->pressed = true;
          mb->button_down();
        } else {
          mb->pressed = false;
          mb->button_up();
        }
      }
      break;
            
    case 2:
      if (event.button.button == SDL_BUTTON_MIDDLE) {
        if (event.button.state == SDL_PRESSED) {
          mb->pressed = true;
          mb->button_down();
        } else {
          mb->pressed = false;
          mb->button_up();
        }
      }
      break;
            
    case 3:
      if (event.button.button == SDL_BUTTON_RIGHT) {
        if (event.button.state == SDL_PRESSED) {
          mb->pressed = true;
          mb->button_down();
        } else {
          mb->pressed = false;
          mb->button_up();
        }
      }
      break;
            
    default: // only three buttons support so far
      break;
  }
}