Ajout des nouvelles textures joueurs
This commit is contained in:
parent
2036485b43
commit
ded76a3527
|
@ -11,6 +11,9 @@ public:
|
|||
|
||||
private:
|
||||
mutable sf::CircleShape sprite;
|
||||
sf::CircleShape shadow_sprite;
|
||||
|
||||
mutable sf::Vector2f previous_position;
|
||||
unsigned int player_number;
|
||||
|
||||
protected:
|
||||
|
@ -79,12 +82,6 @@ public:
|
|||
*/
|
||||
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
|
||||
*/
|
||||
|
|
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) {
|
||||
// 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.setOrigin(sf::Vector2f(getRadius(), getRadius()));
|
||||
sprite.setTexture(
|
||||
&level.getResourceManager().getTexture("player.tga")
|
||||
);
|
||||
sprite.setPosition(getPosition());
|
||||
|
||||
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
|
||||
if (isSelected()) {
|
||||
|
@ -87,9 +109,9 @@ void Player::draw(Level& level) {
|
|||
sprite.setFillColor(sf::Color::Transparent);
|
||||
}
|
||||
|
||||
// déplacement du sprite à la position de la balle
|
||||
sprite.setPosition(getPosition());
|
||||
// dessin des sprites
|
||||
level.getWindow().draw(sprite);
|
||||
level.getWindow().draw(shadow_sprite);
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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 {
|
||||
return sf::FloatRect(
|
||||
getPosition().x - getRadius(),
|
||||
|
|
Loading…
Reference in New Issue