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