Chargement des textures du bloc de gravité
This commit is contained in:
parent
2515ed0d59
commit
e9e924c719
|
@ -6,9 +6,11 @@
|
||||||
|
|
||||||
class Block : public Object {
|
class Block : public Object {
|
||||||
private:
|
private:
|
||||||
mutable sf::Sprite sprite;
|
|
||||||
mutable sf::Sprite select_sprite;
|
mutable sf::Sprite select_sprite;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
mutable sf::Sprite sprite;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Identifiant unique du type "bloc"
|
* Identifiant unique du type "bloc"
|
||||||
|
@ -28,6 +30,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual std::unique_ptr<sf::FloatRect> getAABB() const;
|
virtual std::unique_ptr<sf::FloatRect> getAABB() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opérations de préparation de la texture du bloc
|
||||||
|
*/
|
||||||
|
virtual void beforeDraw(Level& level);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dessin du bloc dans la fenêtre donnée
|
* Dessin du bloc dans la fenêtre donnée
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,6 +22,11 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual ObjectPtr clone() const;
|
virtual ObjectPtr clone() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opérations de préparation de la texture du bloc
|
||||||
|
*/
|
||||||
|
virtual void beforeDraw(Level& level);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Appelé lorsque le bloc de gravité est activé par un objet
|
* Appelé lorsque le bloc de gravité est activé par un objet
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -32,15 +32,12 @@ ObjectPtr Block::load(std::ifstream& file) {
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Block::draw(Level& level) {
|
void Block::beforeDraw(Level& level) {
|
||||||
// utilisation de la texture
|
// texturage et coloration du bloc selon ses propriétés
|
||||||
ResourceManager& resources = level.getResourceManager();
|
sprite.setTexture(
|
||||||
sf::RenderWindow& window = level.getWindow();
|
level.getResourceManager().getTexture("block.tga")
|
||||||
|
);
|
||||||
|
|
||||||
sprite.setTexture(resources.getTexture("block.tga"));
|
|
||||||
select_sprite.setTexture(resources.getTexture("block_select.png"));
|
|
||||||
|
|
||||||
// coloration du bloc en fonction de 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) {
|
||||||
|
@ -48,13 +45,22 @@ void Block::draw(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());
|
||||||
select_sprite.setPosition(getPosition());
|
|
||||||
|
|
||||||
window.draw(sprite);
|
window.draw(sprite);
|
||||||
|
|
||||||
if (isSelected()) {
|
if (isSelected()) {
|
||||||
|
select_sprite.setPosition(getPosition());
|
||||||
|
select_sprite.setTexture(
|
||||||
|
level.getResourceManager().getTexture("block_select.png")
|
||||||
|
);
|
||||||
|
|
||||||
window.draw(select_sprite);
|
window.draw(select_sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,35 @@ ObjectPtr GravityBlock::clone() const {
|
||||||
return ObjectPtr(new GravityBlock(*this));
|
return ObjectPtr(new GravityBlock(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GravityBlock::beforeDraw(Level& level) {
|
||||||
|
Block::beforeDraw(level);
|
||||||
|
|
||||||
|
// texturage et coloration du bloc selon ses propriétés
|
||||||
|
std::string texture_name = "gravity_block_";
|
||||||
|
|
||||||
|
switch (gravity_direction) {
|
||||||
|
case GravityDirection::NORTH:
|
||||||
|
texture_name += "north";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GravityDirection::EAST:
|
||||||
|
texture_name += "east";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GravityDirection::SOUTH:
|
||||||
|
texture_name += "south";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GravityDirection::WEST:
|
||||||
|
texture_name += "west";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite.setTexture(
|
||||||
|
level.getResourceManager().getTexture(texture_name + ".tga")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void GravityBlock::activated(Level& level, Object& object) {
|
void GravityBlock::activated(Level& level, Object& object) {
|
||||||
Block::activated(level, object);
|
Block::activated(level, object);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue