ECSTASY
All in the name
Loading...
Searching...
No Matches
PollEvents.cpp
Go to the documentation of this file.
1
11
12#include <SFML/Graphics.hpp>
13
14#include "PollEvents.hpp"
23
25
27{
28 static event::Gamepad::Button getGamepadButton(unsigned int sfmlButton)
29 {
30 switch (sfmlButton) {
34 case 3: return event::Gamepad::Button::FaceUp;
39 case 8: return event::Gamepad::Button::Middle;
42
43 default: return event::Gamepad::Button::Unknown;
44 }
45 }
46
48 {
49 switch (sfmlAxis) {
50 case 0: return event::Gamepad::Axis::LeftX;
51 case 1: return event::Gamepad::Axis::LeftY;
54 case 4: return event::Gamepad::Axis::RightX;
55 case 5: return event::Gamepad::Axis::RightY;
56 case 6: return event::Gamepad::Axis::DPadX;
57 case 7: return event::Gamepad::Axis::DPadY;
58
59 default: return event::Gamepad::Axis::Unknown;
60 }
61 }
62
64 {
65 if (!registry.hasResource<RenderWindow>()) [[unlikely]]
66 return;
67 RR<RenderWindow> windowWrapper = registry.getResource<RenderWindow>();
68
69 sf::Event event;
70 while (windowWrapper.get().pollEvent(event)) {
71 switch (event.type) {
73 case sf::Event::MouseButtonPressed:
74 case sf::Event::MouseButtonReleased:
76 event::MouseButtonEvent(static_cast<event::Mouse::Button>(event.mouseButton.button),
77 event.type == sf::Event::MouseButtonPressed));
78 break;
79 case sf::Event::MouseWheelScrolled:
81 event::MouseWheelScrollEvent(event.mouseWheelScroll.delta,
82 static_cast<event::Mouse::Wheel>(event.mouseWheelScroll.wheel)));
83 break;
84 case sf::Event::MouseMoved:
86 registry, event::MouseMoveEvent(event.mouseMove.x, event.mouseMove.y));
87 break;
88
90 case sf::Event::KeyPressed:
91 case sf::Event::KeyReleased:
94 static_cast<event::Keyboard::Key>(event.key.code), event.type == sf::Event::KeyPressed));
95 break;
96 case sf::Event::TextEntered:
98 break;
99
101 case sf::Event::JoystickButtonPressed:
102 case sf::Event::JoystickButtonReleased:
104 event::GamepadButtonEvent(event.joystickButton.joystickId,
105 getGamepadButton(event.joystickButton.button),
106 event.type == sf::Event::JoystickButtonPressed));
107 break;
108 case sf::Event::JoystickConnected:
109 case sf::Event::JoystickDisconnected:
112 event.joystickConnect.joystickId, event.type == sf::Event::JoystickConnected));
113 break;
114 case sf::Event::JoystickMoved:
116 event::GamepadAxisEvent(event.joystickMove.joystickId, getGamepadAxis(event.joystickMove.axis),
117 event.joystickMove.position / 100.f));
118 break;
119
120 case sf::Event::Closed: windowWrapper.get()->close(); break;
121 default: break;
122 }
123 }
124 }
125} // namespace ecstasy::integration::sfml
Registry class definition.
Base of an ECS architecture.
Definition Registry.hpp:82
ResourceReference< const R, Locked > getResource() const
Get the Resource of type R.
Definition Registry.hpp:937
bool hasResource() const
Check whether the registry has the resource of type R.
Definition Registry.hpp:918
static void handleEvent(Registry &registry, const Event &event)
Handle an event in a given registry.
Axis
Gamepad axis, associated value must be in range [-1, 1].
Definition Gamepad.hpp:66
@ TriggerLeft
Left trigger (default: -1)
@ TriggerRight
Right trigger (default: -1)
@ LeftY
Left joystick Y axis (default: 0)
@ LeftX
Left joystick X axis (default: 0)
@ RightX
Right joystick X axis (default: 0)
@ RightY
Right joystick Y axis (default: 0)
@ MiddleRight
Right center button (i.e.
@ FaceRight
Face button right (i.e. PS: Square, Xbox: X)
@ Middle
Center buttons (i.e. PS: PS, Xbox: XBOX)
@ FaceDown
Face button down (i.e. PS: Cross, Xbox: A)
void run(ecstasy::Registry &registry) override final
Run the system.
Event integration.
Definition Event.hpp:25
SFML integration.
Definition include.hpp:28
static event::Gamepad::Axis getGamepadAxis(int sfmlAxis)
static event::Gamepad::Button getGamepadButton(unsigned int sfmlButton)
ResourceReference< R, AutoLock > RR
ResourceReference alias
Definition Registry.hpp:66
Event describing a gamepad axis value change.
Event describing a gamepad button pressed or released.
Event describing a gamepad connection or disconnection.
Event describing a key pressed or released.
Definition KeyEvent.hpp:25
Event describing when a mouse button is pressed or released.
Event describing when the mouse move.
Event describing when a mouse wheel is scrolled.
Event describing a text (character) entered.