diff --git a/include/game.hpp b/include/game.hpp index 1d714a9..a8057a6 100644 --- a/include/game.hpp +++ b/include/game.hpp @@ -19,7 +19,7 @@ private: WidgetTimer widget_timer; sf::Time next_frame_time; bool test_mode; - std::shared_ptr return_state; + std::shared_ptr return_state; Mode mode; /** @@ -68,7 +68,7 @@ public: * Mise en mode test : l'appui sur espace renvoie * vers l'éditeur donné */ - void setTestMode(std::shared_ptr set_return_state); + void setTestMode(std::shared_ptr set_return_state); /** * Récupère le mode actuel de jeu diff --git a/src/editor.cpp b/src/editor.cpp index b9d7574..6e75bd8 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -472,6 +472,6 @@ void Editor::test() { } // mise en mode test - game->setTestMode(getManager().getState()); + game->setTestMode(std::dynamic_pointer_cast(getManager().getState())); getManager().setState(game); } diff --git a/src/game.cpp b/src/game.cpp index 859e043..852e9b9 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -30,6 +30,10 @@ void Game::processEvent(const sf::Event& event) { // appui sur espace en mode test : retour à l'éditeur if (event.key.code == sf::Keyboard::Space && test_mode) { test_mode = false; + + // on s'assure que la position de la caméra reste la même + return_state->setCamera(getCamera()); + getManager().setState(return_state); return_state = nullptr; } @@ -162,7 +166,7 @@ bool Game::getTestMode() { return test_mode; } -void Game::setTestMode(std::shared_ptr set_return_state) { +void Game::setTestMode(std::shared_ptr set_return_state) { return_state = set_return_state; test_mode = true; } diff --git a/src/level.cpp b/src/level.cpp index 98d87b6..22b923b 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -202,7 +202,6 @@ void Level::save(std::string filename) { void Level::begin() { sf::Vector2u window_size = getWindow().getSize(); camera.setSize(window_size.x, window_size.y); - camera.setCenter(0, 0); camera_angle = 180.f; gravity_direction = GravityDirection::SOUTH;