skizzle/src/block.cpp

78 lines
2.0 KiB
C++
Raw Normal View History

2016-03-08 21:49:52 +00:00
#include "block.hpp"
2016-03-25 17:40:39 +00:00
#include "player.hpp"
#include "constants.hpp"
#include "resource_manager.hpp"
2016-03-08 16:46:33 +00:00
2016-04-02 13:18:29 +00:00
const unsigned int Block::TYPE_ID = 2;
2016-04-02 13:18:29 +00:00
Block::Block() : Object() {
// 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);
// déplacement de l'origine au centre du bloc
2016-04-06 15:04:03 +00:00
sprite.setOrigin(sf::Vector2f(23, 23));
2016-04-07 09:22:20 +00:00
select_sprite.setOrigin(sf::Vector2f(23, 23));
}
Block::~Block() {}
2016-03-28 18:02:23 +00:00
ObjectPtr Block::clone() const {
return ObjectPtr(new Block(*this));
}
ObjectPtr Block::load(std::ifstream& file) {
ObjectPtr object = ObjectPtr(new Block);
2016-04-02 13:18:29 +00:00
// lecture des propriétés communes des objets
Object::load(file, object);
file.seekg(1, file.cur);
return object;
}
void Block::draw(Manager& manager) {
// utilisation de la texture
2016-04-07 09:22:20 +00:00
ResourceManager& resources = manager.getResourceManager();
sf::RenderWindow& window = manager.getWindow();
sprite.setTexture(resources.getTexture("block.png"));
select_sprite.setTexture(resources.getTexture("block_select.png"));
// coloration du bloc en fonction de sa charge
if (getCharge() > 0) {
sprite.setColor(sf::Color(180, 180, 255));
} else if (getCharge() < 0) {
sprite.setColor(sf::Color(255, 180, 180));
} else {
sprite.setColor(sf::Color::White);
}
sprite.setPosition(getPosition());
2016-04-07 09:22:20 +00:00
select_sprite.setPosition(getPosition());
window.draw(sprite);
if (isSelected()) {
window.draw(select_sprite);
}
}
2016-04-09 01:53:17 +00:00
void Block::activated(Object& object) {
// ne rien faire si le bloc est activé.
// Ceci est un bloc de base qui n'a pas a réagir
// aux activations
}
std::unique_ptr<sf::FloatRect> Block::getAABB() const {
2016-03-31 08:20:09 +00:00
return std::unique_ptr<sf::FloatRect>(new sf::FloatRect(
getPosition().x - Constants::GRID / 2,
getPosition().y - Constants::GRID / 2,
Constants::GRID, Constants::GRID
2016-03-31 08:20:09 +00:00
));
}
unsigned int Block::getTypeId() const {
return TYPE_ID;
}