Calcul dynamique des textures de blocs
This commit is contained in:
parent
dec8f56244
commit
fd6eb31847
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue