RType
SpriteComponent.cpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2023
3 ** R-type
4 ** File description:
5 ** R-type
6 */
7 
9 
10 /**
11  * @brief Construct a new Sprite Component:: Sprite Component object
12  *
13  * @param core
14  * @param socket
15  */
16 SpriteComponent::SpriteComponent(ClientCore *core, std::shared_ptr<ClientSocket> socket) :
17  AComponent(core)
18 {
19  _socket = std::move(socket);
20  if (!_texture.loadFromFile("../src/client/assets/missing.png"))
21  throw std::runtime_error("Cannot load sprite texture");
22  _rect = sf::IntRect(0, 0, static_cast<int>(_texture.getSize().x), static_cast<int>(_texture.getSize().y));
23  _position = sf::Vector2f(0, 0);
24  _sprite.setTexture(_texture);
25  _sprite.setPosition(_position);
26  setSize(sf::Vector2f(200, 200));
27  _sprite.setTextureRect(_rect);
28  _type = ComponentType::SPRITE;
29 }
30 
32 {
33 }
34 
35 /**
36  * @brief display, display the sprite
37  * @param window
38  */
39 void SpriteComponent::display(sf::RenderWindow &window)
40 {
41  window.draw(_sprite);
42 }
43 
44 void SpriteComponent::handleEvent(const sf::Event &event, sf::RenderWindow &window)
45 {
46 }
47 
48 /**
49  * @brief setTexture, set the texture
50  * @param texture
51  */
52 void SpriteComponent::setTexture(const sf::Texture &texture)
53 {
54  _texture = texture;
55  _sprite.setTexture(_texture);
56 }
57 
58 /**
59  * @brief setPosition, set the position
60  * @param position
61  */
62 void SpriteComponent::setPosition(sf::Vector2f position)
63 {
64  _position = position;
65  _sprite.setPosition(_position);
66 }
67 
68 /**
69  * @brief setSize, set the size
70  * @param size
71  */
72 void SpriteComponent::setSize(sf::Vector2f size)
73 {
74  _size = size;
75  _sprite.setScale(_size.x / _texture.getSize().x, _size.y / _texture.getSize().y);
76 }
77 
78 /**
79  * @brief setRect, set the rect
80  * @param rect
81  */
82 void SpriteComponent::setRect(sf::IntRect rect)
83 {
84  _rect = rect;
85  _sprite.setTextureRect(_rect);
86 }
87 
88 /**
89  * @brief setRect, set the rect
90  * @param x
91  * @param y
92  */
93 void SpriteComponent::setPosition(float x, float y)
94 {
95  _position = sf::Vector2f(x, y);
96  _sprite.setPosition(_position);
97 }