ECSTASY
All in the name
Loading...
Searching...
No Matches
RenderWindow.hpp
Go to the documentation of this file.
1
11
12#ifndef ECSTASY_INTEGRATIONS_SFML_RESOURCES_RENDERWINDOW_HPP_
13#define ECSTASY_INTEGRATIONS_SFML_RESOURCES_RENDERWINDOW_HPP_
14
15#include <SFML/Graphics/RenderWindow.hpp>
16#include <functional>
17
19
21{
22
32 using EventListener = std::function<bool(const sf::Event &)>;
33
40 class RenderWindow : public ecstasy::ObjectWrapper<sf::RenderWindow> {
41 public:
49 template <typename... Args>
50 RenderWindow(Args &&...args)
51 : ecstasy::ObjectWrapper<sf::RenderWindow>(std::forward<Args>(args)...), _eventListener(nullptr)
52 {
53 }
54
58 ~RenderWindow() noexcept = default;
59
65 void setEventListener(EventListener listener) noexcept
66 {
67 _eventListener = listener;
68 }
69
78 constexpr EventListener &getEventListener() noexcept
79 {
80 return _eventListener;
81 }
82
90 bool pollEvent(sf::Event &event)
91 {
92 while (_object.pollEvent(event)) {
93 // Return true if a usable (ie not stoled by the listener) event was polled
95 return true;
96 }
97 return false;
98 }
99
100 private:
101 // Optional event listener
103 };
104} // namespace ecstasy::integration::sfml
105
106#endif /* !ECSTASY_INTEGRATIONS_SFML_RESOURCES_RENDERWINDOW_HPP_ */
Basic object wrapper as a resource.
Basic object wrapper as a resource.
sf::RenderWindow _object
Wrapped object.
~RenderWindow() noexcept=default
Destroy the Render Window.
constexpr EventListener & getEventListener() noexcept
Get the Event Listener.
RenderWindow(Args &&...args)
Construct a new Render Window.
void setEventListener(EventListener listener) noexcept
Set the event listener.
bool pollEvent(sf::Event &event)
Poll the next event.
Event integration.
Definition Event.hpp:25
SFML integration.
Definition include.hpp:28
Namespace containing all symbols specific to ecstasy.
Definition ecstasy.hpp:30