Ajout des nouvelles textures joueurs
This commit is contained in:
parent
2036485b43
commit
ded76a3527
|
@ -11,6 +11,9 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable sf::CircleShape sprite;
|
mutable sf::CircleShape sprite;
|
||||||
|
sf::CircleShape shadow_sprite;
|
||||||
|
|
||||||
|
mutable sf::Vector2f previous_position;
|
||||||
unsigned int player_number;
|
unsigned int player_number;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -79,12 +82,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void save(std::ofstream& file) const;
|
virtual void save(std::ofstream& file) const;
|
||||||
|
|
||||||
/**
|
|
||||||
* Met à jour la position de l'objet selon sa
|
|
||||||
* vitesse actuelle
|
|
||||||
*/
|
|
||||||
virtual void updatePosition();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renvoie le numéro du joueur
|
* Renvoie le numéro du joueur
|
||||||
*/
|
*/
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -64,12 +64,34 @@ sf::Vector2f Player::getForces(const Game& game) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::draw(Level& level) {
|
void Player::draw(Level& level) {
|
||||||
// utilisation de la texture
|
// on charge la texture selon le numéro du joueur
|
||||||
|
std::string texture_name;
|
||||||
|
|
||||||
|
if (getPlayerNumber() == 0) {
|
||||||
|
texture_name = "player_1.tga";
|
||||||
|
} else {
|
||||||
|
texture_name = "player_2.tga";
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite.setTexture(&level.getResourceManager().getTexture(texture_name));
|
||||||
sprite.setRadius(getRadius());
|
sprite.setRadius(getRadius());
|
||||||
sprite.setOrigin(sf::Vector2f(getRadius(), getRadius()));
|
sprite.setOrigin(sf::Vector2f(getRadius(), getRadius()));
|
||||||
sprite.setTexture(
|
sprite.setPosition(getPosition());
|
||||||
&level.getResourceManager().getTexture("player.tga")
|
|
||||||
|
shadow_sprite.setTexture(&level.getResourceManager().getTexture("player_shadow.tga"));
|
||||||
|
shadow_sprite.setRadius(getRadius() - 1);
|
||||||
|
shadow_sprite.setOrigin(sf::Vector2f(getRadius() - 1, getRadius() - 1));
|
||||||
|
shadow_sprite.setPosition(getPosition());
|
||||||
|
|
||||||
|
// on fait tourner le sprite selon la différence de position
|
||||||
|
if (previous_position != sf::Vector2f(0, 0)) {
|
||||||
|
sprite.rotate(
|
||||||
|
(getPosition() - previous_position).x *
|
||||||
|
level.getRightDirection().x * .015f
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_position = getPosition();
|
||||||
|
|
||||||
// si le joueur est sélectionné, on met sa bordure en rouge
|
// si le joueur est sélectionné, on met sa bordure en rouge
|
||||||
if (isSelected()) {
|
if (isSelected()) {
|
||||||
|
@ -87,9 +109,9 @@ void Player::draw(Level& level) {
|
||||||
sprite.setFillColor(sf::Color::Transparent);
|
sprite.setFillColor(sf::Color::Transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// déplacement du sprite à la position de la balle
|
// dessin des sprites
|
||||||
sprite.setPosition(getPosition());
|
|
||||||
level.getWindow().draw(sprite);
|
level.getWindow().draw(sprite);
|
||||||
|
level.getWindow().draw(shadow_sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::activate(Game& game, Object::Ptr object) {
|
void Player::activate(Game& game, Object::Ptr object) {
|
||||||
|
@ -98,14 +120,6 @@ void Player::activate(Game& game, Object::Ptr object) {
|
||||||
// qui s'occupe de la réponse
|
// qui s'occupe de la réponse
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::updatePosition() {
|
|
||||||
// calcul de la différence de position pour connaître
|
|
||||||
// (approximativement) la rotation de la balle
|
|
||||||
sf::Vector2f last_position = getPosition();
|
|
||||||
Object::updatePosition();
|
|
||||||
sprite.rotate((getPosition() - last_position).x * 3.f);
|
|
||||||
}
|
|
||||||
|
|
||||||
sf::FloatRect Player::getAABB() const {
|
sf::FloatRect Player::getAABB() const {
|
||||||
return sf::FloatRect(
|
return sf::FloatRect(
|
||||||
getPosition().x - getRadius(),
|
getPosition().x - getRadius(),
|
||||||
|
|
Loading…
Reference in New Issue