Ejemplo n.º 1
0
void InputListener::onEvent(const sf::Event& event)
{
	switch (event.type)
	{
		/* Window */
		case sf::Event::LostFocus:               onFocusLost();                                   break;
		case sf::Event::GainedFocus:             onFocusGained();                                 break;
		case sf::Event::Closed:                  onWindowClosed();                                break;
		case sf::Event::Resized:                 onWindowResized(event.size);                     break;
			
		/* Keyboard */
		case sf::Event::TextEntered:             onTextEntered(event.text);                       break;
		case sf::Event::KeyPressed:              onKeyPressed(event.key);                         break;
		case sf::Event::KeyReleased:             onKeyReleased(event.key);                        break;
			
		/* Mouse */
		case sf::Event::MouseEntered:            onMouseEntered();                                break;
		case sf::Event::MouseLeft:               onMouseLeft();                                   break;
		case sf::Event::MouseMoved:              onMouseMoved(event.mouseMove);                   break;
		case sf::Event::MouseWheelMoved:         onMouseWheelMoved(event.mouseWheel);             break;
		case sf::Event::MouseButtonPressed:      onMouseButtonPressed(event.mouseButton);         break;
		case sf::Event::MouseButtonReleased:     onMouseButtonReleased(event.mouseButton);        break;
			
		/* Joystick */
		case sf::Event::JoystickConnected:       onJoystickConnected(event.joystickConnect);      break;
		case sf::Event::JoystickDisconnected:    onJoystickDisconnected(event.joystickConnect);   break;
		case sf::Event::JoystickButtonPressed:   onJoystickButtonPressed(event.joystickButton);   break;
		case sf::Event::JoystickButtonReleased:  onJoystickButtonReleased(event.joystickButton);  break;
		case sf::Event::JoystickMoved:           onJoystickMoved(event.joystickMove);             break;
			
		default:
			Logger::log("Warning", "Unknow event type: %d", event.type);
			break;
	}
}
Ejemplo n.º 2
0
bool Button::processEvent(const sf::Event& event,const sf::Vector2f& parent_pos) {
    bool res = false;
    if(event.type == sf::Event::MouseButtonReleased) {
        const sf::Vector2f pos = parent_pos + _position;
        const sf::Vector2f size = getSize();
        sf::FloatRect rect(pos.x, pos.y, size.x, size.y);
        if(rect.contains(event.mouseButton.x,event.mouseButton.y)) {
            onClick(event,*this);
            res = true;
        }
    } else if (event.type == sf::Event::MouseMoved) {
        const sf::Vector2f pos = parent_pos + _position;
        const sf::Vector2f size = getSize();
        sf::FloatRect rect(pos.x, pos.y, size.x, size.y);
        int old_status = _status;
        _status = Status::None;
        if(rect.contains(event.mouseMove.x,event.mouseMove.y))
            _status=Status::Hover;
        if((old_status & Status::Hover) and not (_status & Status::Hover))
            onMouseLeft();
        else if(not (old_status & Status::Hover) and (_status & Status::Hover))
            onMouseEntered();
    }
    return res;
}
Ejemplo n.º 3
0
void SDLEventHandler::onWindowEvent(const SDL_WindowEvent& e)
{
    /*
     *SDL provides two "resize" events.
     * Warp Drive only provides treatment for the "resize request"
     * type, for the moment. Should it prove useful, this will be ammended
     */
    if (e.windowID != SDL_GetWindowID(DisplayManager::instance()->getScreen()))
    {
        return;
    }

    switch (e.event)
    {
        case SDL_WINDOWEVENT_SHOWN:
            onWindowShown(e);
            break;
        case SDL_WINDOWEVENT_HIDDEN:
            onWindowHidden(e);
            break;
        case SDL_WINDOWEVENT_EXPOSED:
            onWindowExposed(e);
            break;
        case SDL_WINDOWEVENT_MOVED:
            onWindowMoved(e);
            break;
        case SDL_WINDOWEVENT_SIZE_CHANGED:
            onWindowResized(e);
            break;
        case SDL_WINDOWEVENT_MINIMIZED:
            onWindowMinimized(e);
            break;
        case SDL_WINDOWEVENT_MAXIMIZED:
            onWindowMaximized(e);
            break;
        case SDL_WINDOWEVENT_RESTORED:
            onWindowRestored(e);
            break;
        case SDL_WINDOWEVENT_ENTER:
            onMouseEntered(e);
            break;
        case SDL_WINDOWEVENT_LEAVE:
            onMouseLeft(e);
            break;
        case SDL_WINDOWEVENT_FOCUS_GAINED:
            onKeyboardFocus(e);
            break;
        case SDL_WINDOWEVENT_FOCUS_LOST:
            onKeyboardFocusLost(e);
            break;
        case SDL_WINDOWEVENT_CLOSE:
            onWindowCloseRequest(e);
            break;
    default:
        // Unexpected event type!
        assert(0);
        break;
    }
}