R-Type
R-Type project
Button.hpp
1 /*
2 ** EPITECH PROJECT, 2022
3 ** RType2
4 ** File description:
5 ** Button
6 */
7 
8 #ifndef KAPUI_BUTTON_HPP_
9 #define KAPUI_BUTTON_HPP_
10 
11 #include "KapEngine.hpp"
12 #include "KapEngineEvents.hpp"
13 
14 namespace KapEngine
15 {
16 
17  namespace UI
18  {
19 
20  class Button : public Component
21  {
22  public:
23  Button(std::shared_ptr<GameObject> go, std::string const &textContent = "Text");
24  ~Button();
25 
26  void onMouseEnter() override;
27  void onMouseStay() override;
28  void onMouseExit() override;
29 
30  //text setters
31  void setText(std::string const &text);
32  void setTextPosition(Tools::Vector2 const &pos);
33  void setTextColor(Tools::Color const &color);
34 
35  //button setters
36  void setNormalColor(Tools::Color const &color) {
37  _defaultColor = color;
38  }
39 
40  void setHoverColor(Tools::Color const &color) {
41  _hoverColor = color;
42  }
43 
44  void setClickColor(Tools::Color const &color) {
45  _clickedColor = color;
46  }
47 
48  //button getters
49  Tools::Color getNormalColor() const {
50  return _defaultColor;
51  }
52 
53  Tools::Color getHoverColor() const {
54  return _hoverColor;
55  }
56 
57  Tools::Color getClickColor() const {
58  return _clickedColor;
59  }
60 
61  //background setter
62  void setBackground(std::string const &path, Tools::Rectangle const &rect);
63 
64  Events::EventAction &getOnClick() { return _onClick; }
65 
66  Events::EventAction &getOnHover() { return _onHover; }
67 
68  Events::EventAction &getOnUnhover() { return _onUnhover; }
69 
70  protected:
71  private:
72  void __init(std::shared_ptr<GameObject> go);
73  void __updateImageColor();
74 
75  Tools::Color _currentColor = Tools::Color::white();
76  Tools::Color _defaultColor = Tools::Color::white();
77  Tools::Color _hoverColor = Tools::Color::pink();
78  Tools::Color _clickedColor = Tools::Color::red();
79 
80  Events::EventAction _onClick;
81  Events::EventAction _onHover;
82  Events::EventAction _onUnhover;
83  };
84 
85  } // namespace UI
86 
87 } // namespace KapEngine
88 
89 #endif /* !BUTTON_HPP_ */
KapEngine::UI::Button::onMouseExit
void onMouseExit() override
called when mouse leave object
Definition: Button.cpp:131
KapEngine::UI::Button::onMouseEnter
void onMouseEnter() override
called when mouse enter object
Definition: Button.cpp:106
KapEngine::UI::Button
Definition: Button.hpp:20
KapEngine::UI::Button::onMouseStay
void onMouseStay() override
called when mouse stay on object
Definition: Button.cpp:114
KapEngine::Events::EventAction
Definition: EventAction.hpp:18
KapEngine::Component
Definition: Component.hpp:38
KapEngine::Tools::Vector2
Definition: Vectors.hpp:25
KapEngine::Tools::Color
Definition: Colors.hpp:22
KapEngine
main namespace
Definition: Component.hpp:17
KapEngine::Tools::Rectangle
Definition: Rectangle.hpp:23