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