diff --git a/src/editor.cpp b/src/editor.cpp index 190bdc3..38548ec 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -343,8 +343,7 @@ Object::Ptr Editor::addObject(sf::Vector2f position) { } if (!overlaps) { - Level::addObject(object); - return object; + return Level::addObject(object); } return nullptr; diff --git a/src/level.cpp b/src/level.cpp index c8b22ab..7df335d 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -3,7 +3,6 @@ #include "player.hpp" #include "block.hpp" #include "gravity_block.hpp" -#include #include #include #include @@ -349,10 +348,15 @@ const std::vector& Level::getPlayers() const { return players; } -void Level::addObject(Object::Ptr object) { +Object::Ptr Level::addObject(Object::Ptr object) { // si c'est un joueur, on le met dans le tableau des joueurs // et on lui attribue un numéro if (object->getTypeId() == Player::TYPE_ID) { + // on n'autorise pas plus de deux joueurs + if (players.size() >= 2) { + return nullptr; + } + Player::Ptr player = std::dynamic_pointer_cast(object); player->setPlayerNumber(players.size()); @@ -360,6 +364,7 @@ void Level::addObject(Object::Ptr object) { } objects.push_back(object); + return object; } void Level::removeObject(Object::Ptr object) {