Dessin par ordre de profondeur

This commit is contained in:
Mattéo Delabre 2016-04-06 17:04:03 +02:00
parent 9130adec55
commit 574a53ca90
3 changed files with 15 additions and 13 deletions

View File

@ -11,7 +11,7 @@ Block::Block() : Object() {
setMass(0.f);
// déplacement de l'origine au centre du bloc
sprite.setOrigin(sf::Vector2f(Constants::GRID / 2, 46 - Constants::GRID / 2));
sprite.setOrigin(sf::Vector2f(23, 23));
}
Block::~Block() {}
@ -31,7 +31,6 @@ ObjectPtr Block::load(std::ifstream& file) {
}
void Block::draw(Manager& manager) {
Object::draw(manager);
// utilisation de la texture
sprite.setTexture(
@ -49,6 +48,7 @@ void Block::draw(Manager& manager) {
sprite.setPosition(getPosition());
manager.getWindow().draw(sprite);
Object::draw(manager);
}
std::unique_ptr<sf::FloatRect> Block::getAABB() const {

View File

@ -316,12 +316,16 @@ void Object::setLayer(int set_layer) {
}
bool ObjectCompare::operator()(ObjectPtr const &t1, ObjectPtr const &t2) const {
if (t1->getLayer() == t2->getLayer()) {
sf::Vector2f t1_pos = t1->getPosition();
sf::Vector2f t2_pos = t2->getPosition();
return t1_pos.x > t2_pos.x || t1_pos.y < t2_pos.y;
if (t1->getLayer() != t2->getLayer()) {
return t1->getLayer() > t2->getLayer();
}
return t1->getLayer() > t2->getLayer();
sf::Vector2f t1_pos = t1->getPosition();
sf::Vector2f t2_pos = t2->getPosition();
if (t1_pos.y != t2_pos.y) {
return t1_pos.y < t2_pos.y;
}
return t1_pos.x > t2_pos.x;
}

View File

@ -2,7 +2,6 @@
#include "block.hpp"
#include "constants.hpp"
#include <array>
#include <iostream>
const unsigned int Player::TYPE_ID = 1;
@ -61,8 +60,6 @@ sf::Vector2f Player::getForces(const Manager& manager, const std::vector<ObjectP
}
void Player::draw(Manager& manager) {
Object::draw(manager);
// utilisation de la texture
sprite.setTexture(
manager.getResourceManager().getTexture("ball.png")
@ -73,11 +70,12 @@ void Player::draw(Manager& manager) {
sprite.setColor(sf::Color(239, 83, 80));
} else if (getPlayerNumber() == 1) {
sprite.setColor(sf::Color(92, 107, 192));
}
}
// déplacement du sprite à la position de la balle
sprite.setPosition(getPosition());
manager.getWindow().draw(sprite);
Object::draw(manager);
}
void Player::updatePosition(float delta){