Working on a messaging system for sf events
This commit is contained in:
43
src/Input.cpp
Normal file
43
src/Input.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
#include "Input.h"
|
||||
|
||||
|
||||
Input::Input() :
|
||||
keyboard_flags(sf::Keyboard::Key::KeyCount, false),
|
||||
mouse_flags(sf::Mouse::Button::ButtonCount, false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Input::~Input()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Input::consume_events(sf::RenderWindow *window) {
|
||||
|
||||
sf::Event e;
|
||||
while (window->pollEvent(e)) {
|
||||
event_queue.push_back(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Input::set_flags() {
|
||||
|
||||
for (auto e: event_queue) {
|
||||
if (e.type == sf::Event::KeyPressed) {
|
||||
held_keys.push_back(e.key.code);
|
||||
}
|
||||
else if (e.type == sf::Event::KeyReleased) {
|
||||
std::remove(held_keys.begin(), held_keys.end(), e.key.code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Input::dispatch_events() {
|
||||
|
||||
while (event_queue.size() != 0) {
|
||||
notify(event_queue.front());
|
||||
event_queue.pop_front();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user