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();
|
Block();
|
||||||
virtual ~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é
|
* 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
|
* Dessin du bloc dans la fenêtre donnée
|
||||||
|
|
|
@ -45,11 +45,16 @@ public:
|
||||||
Object();
|
Object();
|
||||||
virtual ~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
|
* Charge les propriétés communes à tous les objets
|
||||||
* depuis le fichier donné dans l'objet donné
|
* 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
|
* Dessine l'objet dans la fenêtre donnée
|
||||||
|
|
|
@ -24,10 +24,15 @@ public:
|
||||||
Player();
|
Player();
|
||||||
virtual ~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é
|
* 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
|
* Dessine la balle dans la fenêtre donnée
|
||||||
|
|
|
@ -16,8 +16,12 @@ Block::Block() : Object() {
|
||||||
|
|
||||||
Block::~Block() {}
|
Block::~Block() {}
|
||||||
|
|
||||||
std::shared_ptr<Object> Block::load(std::ifstream& file) {
|
ObjectPtr Block::clone() const {
|
||||||
std::shared_ptr<Object> object = std::shared_ptr<Object>(new Block);
|
return ObjectPtr(new Block(*this));
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectPtr Block::load(std::ifstream& file) {
|
||||||
|
ObjectPtr object = ObjectPtr(new Block);
|
||||||
|
|
||||||
// lecture des propriétés communes des objets
|
// lecture des propriétés communes des objets
|
||||||
Object::load(file, object);
|
Object::load(file, object);
|
||||||
|
|
|
@ -106,7 +106,7 @@ void Editor::addObject(sf::Vector2f position) {
|
||||||
position *= Constants::GRID;
|
position *= Constants::GRID;
|
||||||
|
|
||||||
// TODO: ajouter un objet du type choisi, pas uniquement de bloc
|
// 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);
|
object->setPosition(position);
|
||||||
|
|
||||||
// avant d'ajouter l'objet, on vérifie qu'il ne soit
|
// avant d'ajouter l'objet, on vérifie qu'il ne soit
|
||||||
|
@ -180,7 +180,7 @@ void Editor::testLevel() {
|
||||||
std::vector<ObjectPtr>& objects = getObjects();
|
std::vector<ObjectPtr>& objects = getObjects();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < objects.size(); i++) {
|
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
|
// copie de la zone de jeu
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* à des instances qui seront utilisées pour la
|
* à des instances qui seront utilisées pour la
|
||||||
* construction d'autres objets de ces types
|
* 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},
|
{Player::TYPE_ID, Player::load},
|
||||||
{Block::TYPE_ID, Block::load}
|
{Block::TYPE_ID, Block::load}
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,7 +23,7 @@ Object::Object() :
|
||||||
|
|
||||||
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
|
// lecture de la position de l'objet
|
||||||
float pos_x, pos_y;
|
float pos_x, pos_y;
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,12 @@ Player::Player() : Object() {
|
||||||
|
|
||||||
Player::~Player() {}
|
Player::~Player() {}
|
||||||
|
|
||||||
std::shared_ptr<Object> Player::load(std::ifstream& file) {
|
ObjectPtr Player::clone() const {
|
||||||
std::shared_ptr<Object> object = std::shared_ptr<Object>(new Player);
|
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);
|
std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(object);
|
||||||
|
|
||||||
// lecture du numéro de joueur
|
// lecture du numéro de joueur
|
||||||
|
|
Loading…
Reference in New Issue