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,8 +14,10 @@ class Engine {
|
||||||
private:
|
private:
|
||||||
sf::Clock clock;
|
sf::Clock clock;
|
||||||
sf::RenderWindow window;
|
sf::RenderWindow window;
|
||||||
|
sf::View view;
|
||||||
|
|
||||||
EngineState state;
|
EngineState state;
|
||||||
sf::View view;
|
ResourceManager resources;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour les objets du jeu pour
|
* Met à jour les objets du jeu pour
|
||||||
|
|
|
@ -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