Activations d'objets
This commit is contained in:
		
							parent
							
								
									0057debdfe
								
							
						
					
					
						commit
						6ae0b14adf
					
				|  | @ -11,7 +11,7 @@ private: | |||
| 
 | ||||
| public: | ||||
|     /**
 | ||||
|      * Identifiant unique du type d'objet | ||||
|      * Identifiant unique du type "bloc" | ||||
|      */ | ||||
|     static const unsigned int TYPE_ID; | ||||
| 
 | ||||
|  | @ -19,14 +19,14 @@ public: | |||
|     virtual ~Block(); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Clone cet objet en un objet avec les mêmes propriétés | ||||
|      * Clone ce bloc en un bloc avec les mêmes propriétés | ||||
|      */ | ||||
|     virtual ObjectPtr clone() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Chargement de l'objet depuis le fichier donné | ||||
|      * Récupère la boîte englobante du bloc | ||||
|      */ | ||||
|     static ObjectPtr load(std::ifstream& file); | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Dessin du bloc dans la fenêtre donnée | ||||
|  | @ -34,14 +34,19 @@ public: | |||
|     virtual void draw(Manager& manager); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère la boîte englobante de l'objet | ||||
|      * Appelé lorsque le bloc est activé par un objet | ||||
|      */ | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const; | ||||
|     virtual void activated(Object& object); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'identifiant de type de cet objet | ||||
|      * Récupère l'identifiant de type des blocs | ||||
|      */ | ||||
|     virtual unsigned int getTypeId() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Chargement du bloc depuis le fichier donné | ||||
|      */ | ||||
|     static ObjectPtr load(std::ifstream& file); | ||||
| }; | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -52,16 +52,31 @@ public: | |||
|     virtual ObjectPtr clone() const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Charge les propriétés communes à tous les objets | ||||
|      * depuis le fichier donné dans l'objet donné | ||||
|      * Récupère la boîte englobante de l'objet | ||||
|      */ | ||||
|     static void load(std::ifstream& file, ObjectPtr object); | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Dessine l'objet dans la fenêtre donnée | ||||
|      */ | ||||
|     virtual void draw(Manager& manager) = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Appelé lorsque l'objet est activé par un autre | ||||
|      */ | ||||
|     virtual void activated(Object& object) = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'identifiant de type de cet objet | ||||
|      */ | ||||
|     virtual unsigned int getTypeId() 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, ObjectPtr object); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Met à jour la vitesse de l'objet selon les | ||||
|      * forces qui lui sont appliquées | ||||
|  | @ -97,16 +112,6 @@ public: | |||
|      */ | ||||
|     virtual void positionalCorrection(Object& obj, const sf::Vector2f& normal, float depth); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère la boîte englobante de l'objet | ||||
|      */ | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'identifiant de type de cet objet | ||||
|      */ | ||||
|     virtual unsigned int getTypeId() const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'accélération de l'objet | ||||
|      */ | ||||
|  |  | |||
|  | @ -11,13 +11,13 @@ private: | |||
| 
 | ||||
| protected: | ||||
|     /**
 | ||||
|      * Calcule les forces appliquées à l'objet | ||||
|      * Calcule les forces appliquées au joueur | ||||
|      */ | ||||
|     virtual sf::Vector2f getForces(const Manager& manager, const std::vector<ObjectPtr>& objects) const; | ||||
| 
 | ||||
| public: | ||||
|     /**
 | ||||
|      * Identifiant unique du type d'objet | ||||
|      * Identifiant unique du type "joueur" | ||||
|      */ | ||||
|     static const unsigned int TYPE_ID; | ||||
| 
 | ||||
|  | @ -25,20 +25,35 @@ public: | |||
|     virtual ~Player(); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Clone cet objet en un objet avec les mêmes propriétés | ||||
|      * Clone ce joueur en un joueur avec les mêmes propriétés | ||||
|      */ | ||||
|     virtual ObjectPtr clone() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Chargement de l'objet depuis le fichier donné | ||||
|      * Récupère la boîte englobante du joueur | ||||
|      */ | ||||
|     static ObjectPtr load(std::ifstream& file); | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Dessine la balle dans la fenêtre donnée | ||||
|      * Dessine le joueur dans la fenêtre donnée | ||||
|      */ | ||||
|     virtual void draw(Manager& manager); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Appelé lorsque le joueur est activé par un objet | ||||
|      */ | ||||
|     virtual void activated(Object& object); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'identifiant de type des joueurs | ||||
|      */ | ||||
|     virtual unsigned int getTypeId() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Chargement du joueur depuis le fichier donné | ||||
|      */ | ||||
|     static ObjectPtr load(std::ifstream& file); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Met à jour la position de l'objet selon sa | ||||
|      * vitesse actuelle | ||||
|  | @ -46,17 +61,7 @@ public: | |||
|     virtual void updatePosition(float delta); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère la boîte englobante de l'objet | ||||
|      */ | ||||
|     virtual std::unique_ptr<sf::FloatRect> getAABB() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère l'identifiant de type de cet objet | ||||
|      */ | ||||
|     virtual unsigned int getTypeId() const; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Renvoie le rayon de la balle | ||||
|      * Renvoie le rayon de la balle du joueur | ||||
|      */ | ||||
|     float getRadius() const; | ||||
| 
 | ||||
|  |  | |||
|  | @ -58,6 +58,12 @@ void Block::draw(Manager& manager) { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void Block::activated(Object& object) { | ||||
|     // ne rien faire si le bloc est activé.
 | ||||
|     // Ceci est un bloc de base qui n'a pas a réagir
 | ||||
|     // aux activations
 | ||||
| } | ||||
| 
 | ||||
| std::unique_ptr<sf::FloatRect> Block::getAABB() const { | ||||
|     return std::unique_ptr<sf::FloatRect>(new sf::FloatRect( | ||||
|         getPosition().x - Constants::GRID / 2, | ||||
|  |  | |||
|  | @ -174,6 +174,11 @@ void Object::solveCollision(Object& obj, const sf::Vector2f& normal) { | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // en ce point, on est bertins qu'une collision a eu lieu.
 | ||||
|     // activation réciproque des deux objets
 | ||||
|     activated(obj); | ||||
|     obj.activated(*this); | ||||
| 
 | ||||
|     // on utilise le plus petit coefficient de friction entre les
 | ||||
|     // deux objets comme le coefficient de la collision
 | ||||
|     float restitution = std::min(getRestitution(), obj.getRestitution()); | ||||
|  |  | |||
|  | @ -68,7 +68,7 @@ void Player::draw(Manager& manager) { | |||
|         &manager.getResourceManager().getTexture("player.tga") | ||||
|     ); | ||||
| 
 | ||||
|     // si le joueur est sélectionné, on le colore en rouge vif
 | ||||
|     // si le joueur est sélectionné, on met sa bordure en rouge
 | ||||
|     // if (isSelected()) {
 | ||||
|     //     sprite.setColor(sf::Color(255, 0, 0));
 | ||||
|     // } else {
 | ||||
|  | @ -85,6 +85,12 @@ void Player::draw(Manager& manager) { | |||
|     manager.getWindow().draw(sprite); | ||||
| } | ||||
| 
 | ||||
| void Player::activated(Object& object) { | ||||
|     // ne rien faire si le joueur est activé.
 | ||||
|     // en règle générale, c'est l'objet activé par le joueur
 | ||||
|     // qui s'occupe de la réponse
 | ||||
| } | ||||
| 
 | ||||
| void Player::updatePosition(float delta){ | ||||
|     // calcul de la différence de position pour connaître
 | ||||
|     // (approximativement) la rotation de la balle
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue