diff --git a/include/block.hpp b/include/block.hpp index c715662..6819b93 100644 --- a/include/block.hpp +++ b/include/block.hpp @@ -64,12 +64,6 @@ public: */ virtual void activate(Game& game, Object::Ptr object); - /** - * Appelé lorsque le bloc a été tué. Si cette fonction - * est appelé, le bloc sera supprimé à la frame suivante - */ - virtual void kill(Game& game); - /** * Récupère l'identifiant de type des blocs */ diff --git a/include/object.hpp b/include/object.hpp index 6c4ce89..1b7402b 100644 --- a/include/object.hpp +++ b/include/object.hpp @@ -86,12 +86,6 @@ public: */ virtual void draw(Level& level) = 0; - /** - * Appelé lorsque l'objet a été tué. Si cette fonction - * est appelé, l'objet sera supprimé à la frame suivante - */ - virtual void kill(Game& game) = 0; - /** * Récupère l'identifiant de type de cet objet */ diff --git a/include/player.hpp b/include/player.hpp index 62ed646..856606d 100644 --- a/include/player.hpp +++ b/include/player.hpp @@ -59,12 +59,6 @@ public: */ virtual void activate(Game& game, Object::Ptr object); - /** - * Appelé lorsque le jouer a été tué. Si cette fonction - * est appelé, le joueur sera supprimé à la frame suivante - */ - virtual void kill(Game& game); - /** * Récupère l'identifiant de type des joueurs */ diff --git a/src/block.cpp b/src/block.cpp index 9e2a267..24ce1b9 100644 --- a/src/block.cpp +++ b/src/block.cpp @@ -81,10 +81,6 @@ void Block::activate(Game& game, Object::Ptr object) { // aux activations } -void Block::kill(Game& game) { - // rien à faire de plus si le bloc a été tué -} - sf::FloatRect Block::getAABB() const { sf::FloatRect transl_aabb = aabb; transl_aabb.left += getPosition().x; diff --git a/src/game.cpp b/src/game.cpp index 773f677..b295826 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -83,9 +83,6 @@ void Game::frame() { std::cout << "<< Perdu : "; switch (getDeathCause()) { - case Game::DeathCause::NONE: - std::cout << "sans aucune raison"; - break; case Game::DeathCause::OUT_OF_BOUNDS: std::cout << "sortie du cadre"; break; @@ -95,9 +92,12 @@ void Game::frame() { case Game::DeathCause::TIME_OUT: std::cout << "temps écoulé"; break; + case Game::DeathCause::NONE: + std::cout << "sans aucune raison"; + break; } - std::cout << " !" << std::endl; + std::cout << " ! >>" << std::endl; break; } } @@ -185,6 +185,12 @@ void Game::update() { // planifie sa mort à la prochaine frame if (!isInZone(obj_a) && obj_a->getMass() != 0) { kill(obj_a); + + // si c'était un joueur, on a perdu + if (obj_a->getTypeId() == Player::TYPE_ID) { + setMode(Game::Mode::LOST); + setDeathCause(Game::DeathCause::OUT_OF_BOUNDS); + } } // on regarde s'il est en collision avec @@ -224,7 +230,6 @@ void Game::update() { } void Game::kill(Object::Ptr object) { - object->kill(*this); pending_kill.push_back(object); } diff --git a/src/kill_block.cpp b/src/kill_block.cpp index aac692b..ede9df6 100644 --- a/src/kill_block.cpp +++ b/src/kill_block.cpp @@ -22,6 +22,8 @@ void KillBlock::activate(Game& game, Object::Ptr object) { // si un joueur touche un bloc de mort, on le tue if (object->getTypeId() == Player::TYPE_ID) { game.kill(object); + game.setMode(Game::Mode::LOST); + game.setDeathCause(Game::DeathCause::KILLED); } } diff --git a/src/player.cpp b/src/player.cpp index 1e5e77e..b20c034 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -98,10 +98,6 @@ void Player::activate(Game& game, Object::Ptr object) { // qui s'occupe de la réponse } -void Player::kill(Game& game) { - game.setMode(Game::Mode::LOST); -} - void Player::updatePosition() { // calcul de la différence de position pour connaître // (approximativement) la rotation de la balle