Coverage report for gui


src/
File: src/render/ui/AdvancedButton.hpp
Date: 2024-06-25 10:57:02
Lines:
0/22
0.0%
Functions:
0/4
0.0%
Branches:
0/16
0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy
4 ** File description:
5 ** AdvancedButton
6 */
7
8 #ifndef ADVANCEDBUTTON_HPP_
9 #define ADVANCEDBUTTON_HPP_
10
11 #include <SFML/Graphics.hpp>
12 #include <memory>
13
14 class AdvancedButton {
15 public:
16 ✗ AdvancedButton(std::string path, sf::Vector2f pos, sf::Vector2f size, float scale = 1)
17 ✗ {
18 ✗ _pos = pos;
19 ✗ _size = size;
20 ✗ _texture.loadFromFile(path);
21 ✗ _sprite.setTexture(_texture);
22 ✗ _sprite.setPosition(pos);
23 ✗ _sprite.setScale(scale, scale);
24 ✗ }
25 ✗ ~AdvancedButton() {};
26
27 ✗ bool update(sf::Event event, sf::RenderWindow &window)
28 {
29 ✗ if (_sprite.getGlobalBounds().contains(window.mapPixelToCoords(sf::Mouse::getPosition(window)))) {
30 ✗ if (event.type == sf::Event::MouseButtonPressed) {
31 ✗ _state = CLICKED;
32 ✗ return true;
33 }
34 ✗ _state = HOVER;
35 ✗ } else if (_state != CLICKED)
36 ✗ _state = NORMAL;
37 return false;
38 }
39
40 ✗ void draw(sf::RenderWindow &window)
41 {
42 ✗ _sprite.setTextureRect(sf::IntRect(_state * _size.x, 0, _size.x, _size.y));
43 ✗ window.draw(_sprite);
44 ✗ }
45
46 protected:
47 private:
48 enum ButtonState {
49 NORMAL,
50 HOVER,
51 CLICKED
52 };
53 ButtonState _state = NORMAL;
54 sf::Sprite _sprite;
55 sf::Texture _texture;
56 sf::Vector2f _pos;
57 sf::Vector2f _size;
58 };
59
60 #endif /* !ADVANCEDBUTTON_HPP_ */
61