diff --git a/include/editor.hpp b/include/editor.hpp new file mode 100644 index 0000000..49243b8 --- /dev/null +++ b/include/editor.hpp @@ -0,0 +1,22 @@ +#ifndef __PTF_GAME_HPP__ +#define __PTF_GAME_HPP__ + +#include "level.hpp" + +/** + * La classe Editor permet l'édition de + * niveaux du jeu + */ +class Editor : public Level { +public: + Editor(Manager& manager); + virtual ~Editor(); + + /** + * Demande le passage à la frame suivante sur + * cette vue + */ + void frame(); +}; + +#endif diff --git a/src/editor.cpp b/src/editor.cpp new file mode 100644 index 0000000..28f3048 --- /dev/null +++ b/src/editor.cpp @@ -0,0 +1,15 @@ +#include "editor.hpp" +#include "constants.hpp" + +Editor::Editor(Manager& manager) : Level(manager) { + // activation de la synchronisation verticale + // car, dans l'éditeur, nous n'avons besoin que de dessiner + // (pas de mise à jour physique) + manager.getWindow().setVerticalSyncEnabled(true); +} + +Editor::~Editor() {} + +void Editor::frame() { + draw(); +} diff --git a/src/game.cpp b/src/game.cpp index 19ae7dd..f3a7f48 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1,8 +1,14 @@ #include "game.hpp" #include "constants.hpp" -Game::Game(Manager& manager) : Level(manager), - next_frame_time(manager.getCurrentTime()) {} +Game::Game(Manager& manager) : Level(manager), next_frame_time(manager.getCurrentTime()) { + // on s'assure que la synchronisation verticale soit + // bien désactivée : on s'occupe de la limitation du + // framerate manuellement dans la fonction frame pour mettre + // une mise à jour fluide de la physique du jeu + manager.getWindow().setVerticalSyncEnabled(false); +} + Game::~Game() {} void Game::frame() { diff --git a/src/main.cpp b/src/main.cpp index ccdfe7d..c86c223 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,25 +1,21 @@ -#include "player.hpp" -#include "block.hpp" #include "manager.hpp" -#include "game.hpp" -#include "constants.hpp" -#include +#include "editor.hpp" #include #include #include int main() { Manager manager; - std::shared_ptr game = std::shared_ptr(new Game(manager)); + std::shared_ptr editor = std::shared_ptr(new Editor(manager)); try { // ouverture du niveau std::ifstream file; file.open("./levels/level1.dat", std::ios::binary | std::ios::in); - game->load(file); + editor->load(file); file.close(); - manager.setView(game); + manager.setView(editor); manager.start(); } catch (const std::exception& exception) { std::cerr << "Le programme a quitté après une erreur d'exécution." << std::endl;