From 4f99da42e3b38698bd5d712c1d5dcd5767c91f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Mon, 11 Apr 2016 23:07:05 +0200 Subject: [PATCH] Correction bug musique --- include/game.hpp | 12 ++++++++++++ include/level.hpp | 6 ++---- src/game.cpp | 28 +++++++++++++++++++--------- src/level.cpp | 14 +++++++------- 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/include/game.hpp b/include/game.hpp index 2f432fc..75f4eb1 100644 --- a/include/game.hpp +++ b/include/game.hpp @@ -29,6 +29,8 @@ private: Mode mode; DeathCause death_cause; + float time_left; + /** * Met à jour les objets du jeu pour * qu'ils s'adaptent au nouvel état @@ -83,6 +85,16 @@ public: */ void setMode(Mode set_mode); void setDeathCause(DeathCause set_death_cause); + + /** + * Modifie le temps total du niveau + */ + virtual void setTotalTime(int set_total_time); + + /** + * Modifie la musique du niveau + */ + virtual void setMusic(std::string set_music); }; #endif diff --git a/include/level.hpp b/include/level.hpp index 78d906e..cf08bc4 100644 --- a/include/level.hpp +++ b/include/level.hpp @@ -37,8 +37,6 @@ private: std::vector zone; protected: - float time_left; - /** * Dessine tous les objets et le fond à l'écran */ @@ -106,7 +104,7 @@ public: /** * Modifie le temps total du niveau */ - void setTotalTime(int set_total_time); + virtual void setTotalTime(int set_total_time); /** * Récupère la musique du niveau @@ -116,7 +114,7 @@ public: /** * Modifie la musique du niveau */ - void setMusic(std::string set_music); + virtual void setMusic(std::string set_music); /** * Récupère le fond du niveau diff --git a/src/game.cpp b/src/game.cpp index 98dce3d..d3d001f 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -7,13 +7,6 @@ Game::Game(Manager& manager) : Level(manager), widget_timer(manager, false), next_frame_time(manager.getCurrentTime()) { - - if (getMusic() != "") { - getResourceManager().playMusic(getMusic()); - } else { - getResourceManager().stopMusic(); - } - mode = Game::Mode::NORMAL; death_cause = Game::DeathCause::NONE; @@ -248,6 +241,10 @@ Game::Mode Game::getMode() { return mode; } +void Game::setDeathCause(Game::DeathCause set_death_cause) { + death_cause = set_death_cause; +} + Game::DeathCause Game::getDeathCause() { return death_cause; } @@ -256,6 +253,19 @@ void Game::setMode(Game::Mode set_mode) { mode = set_mode; } -void Game::setDeathCause(Game::DeathCause set_death_cause) { - death_cause = set_death_cause; +void Game::setTotalTime(int set_total_time) { + Level::setTotalTime(set_total_time); + time_left = getTotalTime(); +} + +void Game::setMusic(std::string set_music) { + Level::setMusic(set_music); + + // lorsqu'on change la musique, on commence à la jouer + // si toutefois il y en a une + if (getMusic() != "") { + getResourceManager().playMusic(getMusic()); + } else { + getResourceManager().stopMusic(); + } } diff --git a/src/level.cpp b/src/level.cpp index 12ad30e..810f19a 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -116,6 +116,7 @@ void loadLevel( // lecture des chemins de la musique et du fond std::getline(file, music, '\0'); std::getline(file, background, '\0'); + std::cout << music << " " << background << std::endl; // lecture des objets si une callback a été fournie int object_count; @@ -155,9 +156,9 @@ Level::Level(Manager& manager) : State(manager) { camera_angle = 180.f; // métadonnées par défaut - name = sf::String("Nouveau niveau"); + setName(sf::String("Nouveau niveau")); current_path = getResourceManager().getLevelPath("new_level.dat"); - time_left = total_time = 30; + setTotalTime(30); // zone de jeu par défaut zone.push_back(sf::Vector2f(-128, -128)); @@ -166,8 +167,8 @@ Level::Level(Manager& manager) : State(manager) { zone.push_back(sf::Vector2f(-128, 128)); // ressources par défaut - music = ""; - background = ""; + setMusic(""); + setBackground(""); } Level::~Level() {} @@ -190,7 +191,8 @@ void Level::load(std::string path) { std::bind(&Level::addObject, this, std::placeholders::_1) ); - time_left = total_time; + setTotalTime(total_time); + setMusic(music); current_path = path; } @@ -324,9 +326,7 @@ void Level::setTotalTime(int set_total_time) { // faisons rester le temps entre 10s et 59:59 set_total_time = std::min(set_total_time, 3599); set_total_time = std::max(set_total_time, 10); - total_time = set_total_time; - time_left = total_time; } std::string Level::getMusic() const {