Clonage des objets avant de démarrer le mode test
This commit is contained in:
parent
4212320fe1
commit
8016602e9d
|
@ -17,10 +17,15 @@ public:
|
|||
Block();
|
||||
virtual ~Block();
|
||||
|
||||
/**
|
||||
* Clone cet objet en un objet avec les mêmes propriétés
|
||||
*/
|
||||
virtual ObjectPtr clone() const;
|
||||
|
||||
/**
|
||||
* Chargement de l'objet depuis le fichier donné
|
||||
*/
|
||||
static std::shared_ptr<Object> load(std::ifstream& file);
|
||||
static ObjectPtr load(std::ifstream& file);
|
||||
|
||||
/**
|
||||
* Dessin du bloc dans la fenêtre donnée
|
||||
|
|
|
@ -45,11 +45,16 @@ public:
|
|||
Object();
|
||||
virtual ~Object();
|
||||
|
||||
/**
|
||||
* Clone cet objet en un objet avec les mêmes propriétés
|
||||
*/
|
||||
virtual ObjectPtr clone() const = 0;
|
||||
|
||||
/**
|
||||
* Charge les propriétés communes à tous les objets
|
||||
* depuis le fichier donné dans l'objet donné
|
||||
*/
|
||||
static void load(std::ifstream& file, std::shared_ptr<Object> object);
|
||||
static void load(std::ifstream& file, ObjectPtr object);
|
||||
|
||||
/**
|
||||
* Dessine l'objet dans la fenêtre donnée
|
||||
|
|
|
@ -24,16 +24,21 @@ public:
|
|||
Player();
|
||||
virtual ~Player();
|
||||
|
||||
/**
|
||||
* Clone cet objet en un objet avec les mêmes propriétés
|
||||
*/
|
||||
virtual ObjectPtr clone() const;
|
||||
|
||||
/**
|
||||
* Chargement de l'objet depuis le fichier donné
|
||||
*/
|
||||
static std::shared_ptr<Object> load(std::ifstream& file);
|
||||
static ObjectPtr load(std::ifstream& file);
|
||||
|
||||
/**
|
||||
* Dessine la balle dans la fenêtre donnée
|
||||
*/
|
||||
virtual void draw(Manager& manager);
|
||||
|
||||
|
||||
/**
|
||||
* Met à jour la position de l'objet selon sa
|
||||
* vitesse actuelle
|
||||
|
|
|
@ -16,8 +16,12 @@ Block::Block() : Object() {
|
|||
|
||||
Block::~Block() {}
|
||||
|
||||
std::shared_ptr<Object> Block::load(std::ifstream& file) {
|
||||
std::shared_ptr<Object> object = std::shared_ptr<Object>(new Block);
|
||||
ObjectPtr Block::clone() const {
|
||||
return ObjectPtr(new Block(*this));
|
||||
}
|
||||
|
||||
ObjectPtr Block::load(std::ifstream& file) {
|
||||
ObjectPtr object = ObjectPtr(new Block);
|
||||
|
||||
// lecture des propriétés communes des objets
|
||||
Object::load(file, object);
|
||||
|
|
|
@ -106,7 +106,7 @@ void Editor::addObject(sf::Vector2f position) {
|
|||
position *= Constants::GRID;
|
||||
|
||||
// TODO: ajouter un objet du type choisi, pas uniquement de bloc
|
||||
std::shared_ptr<Object> object = std::shared_ptr<Object>(new Block);
|
||||
ObjectPtr object = ObjectPtr(new Block);
|
||||
object->setPosition(position);
|
||||
|
||||
// avant d'ajouter l'objet, on vérifie qu'il ne soit
|
||||
|
@ -180,7 +180,7 @@ void Editor::testLevel() {
|
|||
std::vector<ObjectPtr>& objects = getObjects();
|
||||
|
||||
for (unsigned int i = 0; i < objects.size(); i++) {
|
||||
game->getObjects().push_back(objects[i]);
|
||||
game->getObjects().push_back(objects[i]->clone());
|
||||
}
|
||||
|
||||
// copie de la zone de jeu
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* à des instances qui seront utilisées pour la
|
||||
* construction d'autres objets de ces types
|
||||
*/
|
||||
std::map<unsigned int, std::function<std::shared_ptr<Object>(std::ifstream&)>> object_type_map = {
|
||||
std::map<unsigned int, std::function<ObjectPtr(std::ifstream&)>> object_type_map = {
|
||||
{Player::TYPE_ID, Player::load},
|
||||
{Block::TYPE_ID, Block::load}
|
||||
};
|
||||
|
|
|
@ -23,7 +23,7 @@ Object::Object() :
|
|||
|
||||
Object::~Object() {}
|
||||
|
||||
void Object::load(std::ifstream& file, std::shared_ptr<Object> object) {
|
||||
void Object::load(std::ifstream& file, ObjectPtr object) {
|
||||
// lecture de la position de l'objet
|
||||
float pos_x, pos_y;
|
||||
|
||||
|
|
|
@ -13,8 +13,12 @@ Player::Player() : Object() {
|
|||
|
||||
Player::~Player() {}
|
||||
|
||||
std::shared_ptr<Object> Player::load(std::ifstream& file) {
|
||||
std::shared_ptr<Object> object = std::shared_ptr<Object>(new Player);
|
||||
ObjectPtr Player::clone() const {
|
||||
return ObjectPtr(new Player(*this));
|
||||
}
|
||||
|
||||
ObjectPtr Player::load(std::ifstream& file) {
|
||||
ObjectPtr object = ObjectPtr(new Player);
|
||||
std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(object);
|
||||
|
||||
// lecture du numéro de joueur
|
||||
|
|
Loading…
Reference in New Issue