Utilisation du gestionnaire de ressources pour charger les textures

This commit is contained in:
Mattéo Delabre 2016-03-22 20:04:18 +01:00
parent a71bfb45b0
commit 18c9019093
8 changed files with 40 additions and 42 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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() {

View File

@ -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() {

View File

@ -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();
} }

View File

@ -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;