49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
|
#include "input_mapper.h"
|
||
|
|
||
|
|
||
|
InputMapper::InputMapper(Game *game) : game(game)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
void InputMapper::processEvents()
|
||
|
{
|
||
|
sf::Event event{};
|
||
|
while (game->window->pollEvent(event))
|
||
|
{
|
||
|
switch (event.type)
|
||
|
{
|
||
|
case sf::Event::KeyPressed:
|
||
|
handleKeyPress(event.key);
|
||
|
break;
|
||
|
case sf::Event::KeyReleased:
|
||
|
break;
|
||
|
case sf::Event::Closed:
|
||
|
game->exit();
|
||
|
break;
|
||
|
case sf::Event::Resized:
|
||
|
game->window->setView(sf::View(sf::FloatRect(0, 0, event.size.width, event.size.height)));
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void InputMapper::handleKeyPress(sf::Event::KeyEvent event)
|
||
|
{
|
||
|
// Close game on Escape or Q in DEV Mode
|
||
|
if (DEVELOPER_MODE && (event.code == sf::Keyboard::Escape || event.code == sf::Keyboard::Q))
|
||
|
{
|
||
|
game->exit();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Move view
|
||
|
auto direction = Direction::getDirection(event.code);
|
||
|
if (direction != InputDirection::NONE)
|
||
|
{
|
||
|
game->actionController->moveView(direction);
|
||
|
}
|
||
|
}
|