void EventManager::Update()
{
if (!m_hasFocus) { return; }
for (auto &b_itr : m_bindings) {
Binding* bind = b_itr.second;
for (auto &e_itr : bind->m_events) {
switch (e_itr.first) {
case(EventType::Keyboard) :
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key(e_itr.second.m_code))) {
if (bind->m_details.m_keyCode != -1) {
bind->m_details.m_keyCode = e_itr.second.m_code;
}
++(bind->c);
}
break;
case(EventType::Mouse) :
if (sf::Mouse::isButtonPressed(sf::Mouse::Button(e_itr.second.m_code))) {
if (bind->m_details.m_keyCode != -1) {
bind->m_details.m_keyCode = e_itr.second.m_code;
}
++(bind->c);
}
break;
case(EventType::Joystick) :
// Up for expansion.
break;
}
}
if (bind->m_events.size() == bind->c) {
auto callItr = m_callbacks.find(bind->m_name);
if (callItr != m_callbacks.end()) {
callItr->second(&bind->m_details);
}
}
bind->c = 0;
bind->m_details.Clear();
}
}