Calcul dynamique des textures de blocs

This commit is contained in:
Mattéo Delabre 2016-04-10 22:15:42 +02:00
parent dec8f56244
commit fd6eb31847
4 changed files with 19 additions and 21 deletions

View File

@ -46,9 +46,9 @@ public:
virtual float getRadius() const; virtual float getRadius() const;
/** /**
* Opérations de préparation de la texture du bloc * Calcule la texture à afficher pour ce bloc
*/ */
virtual void beforeDraw(Level& level); virtual std::string getTexture();
/** /**
* Dessin du bloc dans la fenêtre donnée * Dessin du bloc dans la fenêtre donnée

View File

@ -35,9 +35,9 @@ public:
virtual Object::Ptr clone() const; virtual Object::Ptr clone() const;
/** /**
* Opérations de préparation de la texture du bloc * Calcule la texture à afficher pour ce bloc
*/ */
virtual void beforeDraw(Level& level); virtual std::string getTexture();
/** /**
* Appelé lorsque le bloc de gravité est activé par un objet * Appelé lorsque le bloc de gravité est activé par un objet

View File

@ -38,12 +38,20 @@ void Block::save(std::ofstream& file) const {
Object::save(file); Object::save(file);
} }
void Block::beforeDraw(Level& level) { std::string Block::getTexture() {
// texturage et coloration du bloc selon ses propriétés if (getMass() == 0) {
sprite.setTexture( return "block.tga";
level.getResourceManager().getTexture("block.tga") }
);
return "movable_block.tga";
}
void Block::draw(Level& level) {
// utilisation de la texture
sf::RenderWindow& window = level.getWindow();
sprite.setTexture(level.getResourceManager().getTexture(getTexture()));
// coloration du bloc selon sa charge
if (getCharge() > 0) { if (getCharge() > 0) {
sprite.setColor(sf::Color(180, 180, 255)); sprite.setColor(sf::Color(180, 180, 255));
} else if (getCharge() < 0) { } else if (getCharge() < 0) {
@ -51,12 +59,6 @@ void Block::beforeDraw(Level& level) {
} else { } else {
sprite.setColor(sf::Color::White); sprite.setColor(sf::Color::White);
} }
}
void Block::draw(Level& level) {
// utilisation de la texture
sf::RenderWindow& window = level.getWindow();
beforeDraw(level);
sprite.setPosition(getPosition()); sprite.setPosition(getPosition());
window.draw(sprite); window.draw(sprite);

View File

@ -10,9 +10,7 @@ Object::Ptr GravityBlock::clone() const {
return Object::Ptr(new GravityBlock(*this)); return Object::Ptr(new GravityBlock(*this));
} }
void GravityBlock::beforeDraw(Level& level) { std::string GravityBlock::getTexture() {
Block::beforeDraw(level);
// texturage et coloration du bloc selon ses propriétés // texturage et coloration du bloc selon ses propriétés
std::string texture_name = "gravity_block_"; std::string texture_name = "gravity_block_";
@ -34,9 +32,7 @@ void GravityBlock::beforeDraw(Level& level) {
break; break;
} }
sprite.setTexture( return texture_name + ".tga";
level.getResourceManager().getTexture(texture_name + ".tga")
);
} }
void GravityBlock::activated(Level& level, Object* object) { void GravityBlock::activated(Level& level, Object* object) {