Utilisation du gestionnaire de ressources pour charger les textures
This commit is contained in:
		
							parent
							
								
									a71bfb45b0
								
							
						
					
					
						commit
						18c9019093
					
				| 
						 | 
					@ -3,13 +3,12 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <SFML/Graphics.hpp>
 | 
					#include <SFML/Graphics.hpp>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
#include "engine_state.hpp"
 | 
					 | 
				
			||||||
#include "object.hpp"
 | 
					#include "object.hpp"
 | 
				
			||||||
 | 
					#include "engine_state.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Ball : public Object {
 | 
					class Ball : public Object {
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    sf::Texture texture;
 | 
					    sf::Sprite sprite;
 | 
				
			||||||
    sf::RectangleShape shape;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					@ -23,7 +22,7 @@ public:
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Dessine la balle dans la fenêtre donnée
 | 
					     * Dessine la balle dans la fenêtre donnée
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    virtual void draw(sf::RenderWindow& window);
 | 
					    virtual void draw(sf::RenderWindow& window, ResourceManager& resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Récupère la boîte englobante de l'objet
 | 
					     * Récupère la boîte englobante de l'objet
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Block : public Object {
 | 
					class Block : public Object {
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    sf::Texture texture;
 | 
					    sf::Sprite sprite;
 | 
				
			||||||
    sf::RectangleShape shape;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    Block(float x, float y);
 | 
					    Block(float x, float y);
 | 
				
			||||||
| 
						 | 
					@ -17,7 +16,7 @@ public:
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Dessin du bloc dans la fenêtre donnée
 | 
					     * Dessin du bloc dans la fenêtre donnée
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    virtual void draw(sf::RenderWindow& window);
 | 
					    virtual void draw(sf::RenderWindow& window, ResourceManager& resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Récupère la boîte englobante de l'objet
 | 
					     * Récupère la boîte englobante de l'objet
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
#include <SFML/Graphics.hpp>
 | 
					#include <SFML/Graphics.hpp>
 | 
				
			||||||
#include "object.hpp"
 | 
					#include "object.hpp"
 | 
				
			||||||
#include "engine_state.hpp"
 | 
					#include "engine_state.hpp"
 | 
				
			||||||
 | 
					#include "resource_manager.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * La classe principale Engine coordonne les éléments
 | 
					 * La classe principale Engine coordonne les éléments
 | 
				
			||||||
| 
						 | 
					@ -13,9 +14,11 @@ class Engine {
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    sf::Clock clock;
 | 
					    sf::Clock clock;
 | 
				
			||||||
    sf::RenderWindow window;
 | 
					    sf::RenderWindow window;
 | 
				
			||||||
    EngineState state;
 | 
					 | 
				
			||||||
    sf::View view;
 | 
					    sf::View view;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EngineState state;
 | 
				
			||||||
 | 
					    ResourceManager resources;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Met à jour les objets du jeu pour
 | 
					     * Met à jour les objets du jeu pour
 | 
				
			||||||
     * qu'ils s'adaptent au nouvel état du moteur
 | 
					     * qu'ils s'adaptent au nouvel état du moteur
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
#include <SFML/Graphics.hpp>
 | 
					#include <SFML/Graphics.hpp>
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
#include "engine_state.hpp"
 | 
					#include "engine_state.hpp"
 | 
				
			||||||
 | 
					#include "resource_manager.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Block;
 | 
					class Block;
 | 
				
			||||||
class Ball;
 | 
					class Ball;
 | 
				
			||||||
| 
						 | 
					@ -37,7 +38,7 @@ public:
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Dessine l'objet dans la fenêtre donnée
 | 
					     * Dessine l'objet dans la fenêtre donnée
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    virtual void draw(sf::RenderWindow& window);
 | 
					    virtual void draw(sf::RenderWindow& window, ResourceManager& resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Met à jour l'objet juste avant le dessin d'une frame
 | 
					     * Met à jour l'objet juste avant le dessin d'une frame
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								src/ball.cpp
								
								
								
								
							
							
						
						
									
										24
									
								
								src/ball.cpp
								
								
								
								
							| 
						 | 
					@ -4,9 +4,9 @@
 | 
				
			||||||
#include <array>
 | 
					#include <array>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ball::Ball(float x, float y) : Object(x, y),
 | 
					Ball::Ball(float x, float y) : Object(x, y) {
 | 
				
			||||||
    shape(sf::Vector2f(2 * getRadius(), 2 * getRadius())) {
 | 
					    // déplacement de l'origine au centre de la balle
 | 
				
			||||||
    shape.setOrigin(sf::Vector2f(getRadius(), getRadius()));
 | 
					    sprite.setOrigin(sf::Vector2f(getRadius(), getRadius()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sf::Vector2f Ball::getForces(EngineState& state) {
 | 
					sf::Vector2f Ball::getForces(EngineState& state) {
 | 
				
			||||||
| 
						 | 
					@ -24,18 +24,16 @@ sf::Vector2f Ball::getForces(EngineState& state) {
 | 
				
			||||||
    return forces;
 | 
					    return forces;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Ball::draw(sf::RenderWindow& window) {
 | 
					void Ball::draw(sf::RenderWindow& window, ResourceManager& resources) {
 | 
				
			||||||
    Object::draw(window);
 | 
					    Object::draw(window, resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // chargement de la texture de test
 | 
					    // utilisation de la texture
 | 
				
			||||||
    if (!texture.loadFromFile("./res/ball.png")) {
 | 
						sprite.setTexture(resources.getTexture("ball.png"));
 | 
				
			||||||
    	// erreur
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shape.rotate(getVelocity().x * .1f);
 | 
					    // déplacement du sprite à la position de la balle
 | 
				
			||||||
	shape.setTexture(&texture);
 | 
					    sprite.rotate(getVelocity().x * .1f);
 | 
				
			||||||
    shape.setPosition(getPosition());
 | 
					    sprite.setPosition(getPosition());
 | 
				
			||||||
    window.draw(shape);
 | 
					    window.draw(sprite);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::unique_ptr<sf::FloatRect> Ball::getAABB() {
 | 
					std::unique_ptr<sf::FloatRect> Ball::getAABB() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,36 +1,34 @@
 | 
				
			||||||
#include "block.hpp"
 | 
					#include "block.hpp"
 | 
				
			||||||
#include "ball.hpp"
 | 
					#include "ball.hpp"
 | 
				
			||||||
#include "constants.hpp"
 | 
					#include "constants.hpp"
 | 
				
			||||||
 | 
					#include "resource_manager.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Block::Block(float x, float y) : Object(x, y),
 | 
					Block::Block(float x, float y) : Object(x, y) {
 | 
				
			||||||
    shape(sf::Vector2f(Constants::GRID, Constants::GRID)) {
 | 
					    // par défaut, les blocs ne sont pas déplaçables et ont
 | 
				
			||||||
    // par défaut, les blocs ne sont pas déplaçables
 | 
					    // donc une masse infinie, représentée par 0
 | 
				
			||||||
    // et ont donc une masse infinie
 | 
					 | 
				
			||||||
    setMass(0.f);
 | 
					    setMass(0.f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shape.setOrigin(sf::Vector2f(Constants::GRID / 2, Constants::GRID / 2));
 | 
					    // déplacement de l'origine au centre du bloc
 | 
				
			||||||
 | 
					    sprite.setOrigin(sf::Vector2f(Constants::GRID / 2, Constants::GRID / 2));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Block::draw(sf::RenderWindow& window) {
 | 
					void Block::draw(sf::RenderWindow& window, ResourceManager& resources) {
 | 
				
			||||||
    Object::draw(window);
 | 
					    Object::draw(window, resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// chargement de la texture de test
 | 
					    // utilisation de la texture
 | 
				
			||||||
	if (!texture.loadFromFile("./res/block.png")) {
 | 
						sprite.setTexture(resources.getTexture("block.png"));
 | 
				
			||||||
    	// erreur
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	shape.setTexture(&texture);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // coloration du bloc en fonction de sa charge
 | 
				
			||||||
    if (getCharge() > 0) {
 | 
					    if (getCharge() > 0) {
 | 
				
			||||||
        shape.setFillColor(sf::Color(180, 180, 255));
 | 
					        sprite.setColor(sf::Color(180, 180, 255));
 | 
				
			||||||
    } else if (getCharge() < 0) {
 | 
					    } else if (getCharge() < 0) {
 | 
				
			||||||
        shape.setFillColor(sf::Color(255, 180, 180));
 | 
					        sprite.setColor(sf::Color(255, 180, 180));
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        shape.setFillColor(sf::Color::White);
 | 
					        sprite.setColor(sf::Color::White);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shape.setPosition(getPosition());
 | 
					    sprite.setPosition(getPosition());
 | 
				
			||||||
    window.draw(shape);
 | 
					    window.draw(sprite);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::unique_ptr<sf::FloatRect> Block::getAABB() {
 | 
					std::unique_ptr<sf::FloatRect> Block::getAABB() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,7 +87,7 @@ void Engine::draw() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // dessin des objets de la file d'affichage couche par couche
 | 
					    // dessin des objets de la file d'affichage couche par couche
 | 
				
			||||||
    while (!display_queue.empty()) {
 | 
					    while (!display_queue.empty()) {
 | 
				
			||||||
        display_queue.top()->draw(window);
 | 
					        display_queue.top()->draw(window, resources);
 | 
				
			||||||
        display_queue.pop();
 | 
					        display_queue.pop();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ sf::Vector2f Object::getForces(EngineState& state) {
 | 
				
			||||||
    return forces;
 | 
					    return forces;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Object::draw(sf::RenderWindow& window) {
 | 
					void Object::draw(sf::RenderWindow& window, ResourceManager& resources) {
 | 
				
			||||||
    if (Constants::DEBUG_MODE) {
 | 
					    if (Constants::DEBUG_MODE) {
 | 
				
			||||||
        velocity_line[0].position = position;
 | 
					        velocity_line[0].position = position;
 | 
				
			||||||
        velocity_line[0].color = sf::Color::Green;
 | 
					        velocity_line[0].color = sf::Color::Green;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue