aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2018-02-12 19:40:13 +0100
committerNao Pross <naopross@thearcway.org>2018-02-12 19:40:13 +0100
commitf8ca0da580a1589742a541a14b530e39282a5c9b (patch)
tree1758eb024bcad447f24d758e0fc4c295f0468933 /src
parentFix zoom bug, add Scene.type member (diff)
parentadd pan (diff)
downloadSubconscious-old-f8ca0da580a1589742a541a14b530e39282a5c9b.tar.gz
Subconscious-old-f8ca0da580a1589742a541a14b530e39282a5c9b.zip
Merge mafaldo's work
Diffstat (limited to 'src')
-rw-r--r--src/main/cpp/Subconscious.cpp28
-rw-r--r--src/main/cpp/WorldScene.cpp10
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
+ );
}