diff options
Diffstat (limited to 'src/main/cpp')
-rw-r--r-- | src/main/cpp/Subconscious.cpp | 28 | ||||
-rw-r--r-- | src/main/cpp/WorldScene.cpp | 10 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/main/cpp/Subconscious.cpp b/src/main/cpp/Subconscious.cpp index a4f6128..9765f2f 100644 --- a/src/main/cpp/Subconscious.cpp +++ b/src/main/cpp/Subconscious.cpp @@ -32,6 +32,34 @@ void Subconscious::run() switch (event.type) { /*** Keyboard Events ***/ case sf::Event::KeyPressed: + switch (event.key.code) { + case sf::Keyboard::Up: + if (_currentScene->type == Scene::Type::WORLD) { + static_cast<WorldScene*>(_currentScene)->pan(0, 10); + } + break; + + case sf::Keyboard::Down: + if (_currentScene->type == Scene::Type::WORLD) { + static_cast<WorldScene*>(_currentScene)->pan(0, -10); + } + break; + + case sf::Keyboard::Left: + if (_currentScene->type == Scene::Type::WORLD) { + static_cast<WorldScene*>(_currentScene)->pan(10, 0); + } + break; + + case sf::Keyboard::Right: + if (_currentScene->type == Scene::Type::WORLD) { + static_cast<WorldScene*>(_currentScene)->pan(-10, 0); + } + break; + + default: + break; + } break; case sf::Event::KeyReleased: diff --git a/src/main/cpp/WorldScene.cpp b/src/main/cpp/WorldScene.cpp index 209596b..c152db8 100644 --- a/src/main/cpp/WorldScene.cpp +++ b/src/main/cpp/WorldScene.cpp @@ -17,7 +17,7 @@ void WorldScene::render() rect.setOutlineColor(sf::Color::Black); for (const Tile &tile : map.tiles()) { - rect.setPosition(tile.x * _tileSize, tile.y * _tileSize); + rect.setPosition(tile.x * _tileSize + _panX, tile.y * _tileSize + _panY); _window.draw(rect); } } @@ -51,5 +51,13 @@ void WorldScene::zoom(float factor) void WorldScene::pan(int dx, int dy) { + _panX = _panX + dx; + _panY = _panY + dy; + sf::View view = _window.getView(); + + view.setCenter( + view.getCenter().x + _panX, + view.getCenter().y + _panY + ); } |