Did a lot of boilerplate on the Event wrapper pt.2

This commit is contained in:
MitchellHansen
2017-01-14 01:16:29 -08:00
parent 4cd9bbb4ed
commit 2e0227419c
3 changed files with 410 additions and 33 deletions

View File

@@ -13,13 +13,21 @@ Input::~Input()
}
void Input::consume_events(sf::RenderWindow *window) {
void Input::consume_sf_events(sf::RenderWindow *window) {
std::list<sf::Event> sf_event_queue;
sf::Event e;
while (window->pollEvent(e)) {
event_queue.push_back(e);
sf_event_queue.push_back(e);
}
transpose_sf_events(sf_event_queue);
}
void Input::consume_vr_events() {
}
void Input::set_flags() {
@@ -41,3 +49,117 @@ void Input::dispatch_events() {
event_queue.pop_front();
}
}
void Input::transpose_sf_events(std::list<sf::Event> sf_event_queue) {
for (auto sf_event: sf_event_queue) {
vr::Event vr_event;
switch(sf_event.type) {
case sf::Event::Closed : {
event_queue.push_back(vr::Closed());
};
case sf::Event::Resized: {
event_queue.push_back(vr::Resized());
};
case sf::Event::LostFocus: {
vr_event = vr::Closed();
};
case sf::Event::GainedFocus: {
vr_event = vr::Closed();
};
case sf::Event::TextEntered: {
vr_event = vr::Closed();
};
case sf::Event::KeyPressed: {
vr_event = vr::Closed();
};
case sf::Event::KeyReleased: {
vr_event = vr::Closed();
};
case sf::Event::MouseWheelMoved: {
vr_event = vr::Closed();
};
case sf::Event::Closed: {
vr_event = vr::Closed();
};
case sf::Event::Closed: {
vr_event = vr::Closed();
};
}
if (e.type == sf::Event::Closed ||
e.type == sf::Event::LostFocus ||
e.type == sf::Event::GainedFocus) {
event_class = Event_Class::WindowEvent;
}
// Preserve a little of sfml's default behavior and separate resized event
else if (e.type == sf::Event::Resized) {
event_class = Event_Class::SizeEvent;
}
else if (e.type == sf::Event::TextEntered) {
event_class = Event_Class::TextEvent;
}
else if (e.type == sf::Event::KeyPressed ||
e.type == sf::Event::KeyReleased) {
event_class = Event_Class::KeyEvent;
}
else if (e.type == sf::Event::MouseWheelMoved ||
e.type == sf::Event::MouseWheelScrolled) {
event_class = Event_Class::MouseWheelScrollEvent;
}
else if (e.type == sf::Event::MouseButtonPressed ||
e.type == sf::Event::MouseButtonReleased) {
event_class = Event_Class::MouseButtonEvent;
}
// Is this a good idea, mixing events that contain data, and don't contain data?
else if (e.type == sf::Event::MouseMoved ||
e.type == sf::Event::MouseEntered ||
e.type == sf::Event::MouseLeft) {
event_class = Event_Class::MouseMoveEvent;
}
else if (e.type == sf::Event::JoystickButtonPressed ||
e.type == sf::Event::JoystickButtonReleased) {
event_class = Event_Class::JoystickButtonEvent;
}
else if (e.type == sf::Event::JoystickMoved) {
event_class = Event_Class::JoystickMoveEvent;
}
else if (e.type == sf::Event::JoystickConnected ||
e.type == sf::Event::JoystickDisconnected) {
event_class = Event_Class::JoystickConnectEvent;
}
else if (e.type == sf::Event::TouchBegan ||
e.type == sf::Event::TouchEnded ||
e.type == sf::Event::TouchMoved) {
event_class = Event_Class::TouchEvent;
}
else if (e.type == sf::Event::SensorChanged) {
event_class = Event_Class::SensorEvent;
}
}
}