123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #include "Input.hpp"
- Input::Input(const Input& other): _type(other._type), _positive(other._positive)
- {
- std::memcpy(&_event, &other._event, sizeof(sf::Event));
- }
- Input& Input::operator=(const Input& other)
- {
- std::memcpy(&_event, &other._event, sizeof(sf::Event));
- _type = other._type;
- return *this;
- }
- Input::Input(const sf::Keyboard::Key& key, int type): _type(type), _positive(true)
- {
- _event.type = sf::Event::EventType::KeyPressed;
- _event.key.code = key;
- }
- Input::Input(const sf::Mouse::Button& button, int type): _type(type), _positive(true)
- {
- _event.type = sf::Event::EventType::MouseButtonPressed;
- _event.mouseButton.button = button;
- }
- Input::Input(const int joystickButton, int type): _type(type), _positive(true)
- {
- _event.type = sf::Event::EventType::JoystickButtonPressed;
- _event.joystickButton.button = joystickButton;
- }
- Input::Input(const sf::Joystick::Axis& axis, bool positive): _type(Type::RealTime|Type::Pressed), _positive(positive)
- {
- _event.type = sf::Event::EventType::JoystickMoved;
- _event.joystickMove.joystickId = 0;
- _event.joystickMove.axis = axis;
- }
- float Input::test() const
- {
- switch(_event.type)
- {
- case sf::Event::EventType::KeyPressed:
- if(_type & Type::Pressed)
- return sf::Keyboard::isKeyPressed(_event.key.code) ? 1.f : 0.f;
- break;
- case sf::Event::EventType::MouseButtonPressed:
- if(_type & Type::Pressed)
- return sf::Mouse::isButtonPressed(_event.mouseButton.button) ? 1.f : 0.f;
- break;
- case sf::Event::EventType::JoystickButtonPressed:
- if(_type & Type::Pressed)
- return sf::Joystick::isButtonPressed(0, _event.joystickButton.button) ? 1.f : 0.f;
- break;
- case sf::Event::EventType::JoystickMoved:
- if(_type & Type::Pressed)
- {
- float f = sf::Joystick::getAxisPosition(_event.joystickMove.joystickId, _event.joystickMove.axis) / 100.f;
- if(!_positive)
- f = -f;
- return f > 0.f ? f : 0.f;
- }
- break;
- default:
- break;
- }
- return 0.f;
- }
- bool Input::operator==(const sf::Event& event) const
- {
- switch(event.type)
- {
- case sf::Event::EventType::KeyPressed:
- if(_type & Type::Pressed && _event.type == sf::Event::EventType::KeyPressed)
- return event.key.code == _event.key.code;
- break;
- case sf::Event::EventType::KeyReleased:
- if(_type & Type::Released && _event.type == sf::Event::EventType::KeyPressed)
- return event.key.code == _event.key.code;
- break;
- case sf::Event::EventType::MouseButtonPressed:
- if(_type & Type::Pressed && _event.type == sf::Event::EventType::MouseButtonPressed)
- return event.mouseButton.button == _event.mouseButton.button;
- break;
- case sf::Event::EventType::MouseButtonReleased:
- if(_type & Type::Released && _event.type == sf::Event::EventType::MouseButtonPressed)
- return event.mouseButton.button == _event.mouseButton.button;
- break;
- case sf::Event::EventType::JoystickButtonPressed:
- if(_type & Type::Pressed && _event.type == sf::Event::EventType::JoystickButtonPressed)
- return event.joystickButton.button == _event.joystickButton.button;
- break;
- case sf::Event::EventType::JoystickMoved:
- if(_type & Type::Pressed && _event.type == sf::Event::EventType::JoystickMoved)
- return event.joystickMove.position == _event.joystickMove.position;
- break;
- default:
- break;
- }
- return false;
- }
- bool Input::operator==(const Input& other) const
- {
- return _type == other._type and other == _event;
- }
|