#include "Input.hpp" Input::Input(const Input& other): _type(other._type) { 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) { _event.type = sf::Event::EventType::KeyPressed; _event.key.code = key; } Input::Input(const sf::Mouse::Button& button, int type): _type(type) { _event.type = sf::Event::EventType::MouseButtonPressed; _event.mouseButton.button = button; } bool Input::test() const { switch(_event.type) { case sf::Event::EventType::KeyPressed: if(_type & Type::Pressed) return sf::Keyboard::isKeyPressed(_event.key.code); break; case sf::Event::EventType::MouseButtonPressed: if(_type & Type::Pressed) return sf::Mouse::isButtonPressed(_event.mouseButton.button); break; default: break; } return false; } bool Input::operator==(const sf::Event& event) const { switch(event.type) { case sf::Event::EventType::KeyPressed: if(_type & Type::Pressed and _event.type == sf::Event::EventType::KeyPressed) return event.key.code == _event.key.code; break; case sf::Event::EventType::KeyReleased: if(_type & Type::Released and _event.type == sf::Event::EventType::KeyPressed) return event.key.code == _event.key.code; break; case sf::Event::EventType::MouseButtonPressed: if(_type & Type::Pressed and _event.type == sf::Event::EventType::MouseButtonPressed) return event.mouseButton.button == _event.mouseButton.button; break; case sf::Event::EventType::MouseButtonReleased: if(_type & Type::Released and _event.type == sf::Event::EventType::MouseButtonPressed) return event.mouseButton.button == _event.mouseButton.button; break; default: break; } return false; } bool Input::operator==(const Input& other) const { return _type == other._type and other == _event; }