-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathButtonEventCreator.cpp
More file actions
49 lines (40 loc) · 1.62 KB
/
ButtonEventCreator.cpp
File metadata and controls
49 lines (40 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "ButtonEventCreator.hpp"
ButtonEventCreator::ButtonEventCreator()
{
for (size_t buttonNumber = (int)ButtonsEnum::First; buttonNumber < (int)ButtonsEnum::Size; buttonNumber++)
{
oldButtons[buttonNumber] = false;
newButtons[buttonNumber] = false;
}
}
std::vector<ButtonsEnum> ButtonEventCreator::GenerateEvents(blit::ButtonState buttons)
{
setOldButtons();
setNewButtons(buttons);
return createPressedEvents();
}
void ButtonEventCreator::setOldButtons()
{
for (size_t buttonNumber = (int)ButtonsEnum::First; buttonNumber < (int)ButtonsEnum::Size; buttonNumber++)
oldButtons[buttonNumber] = newButtons[buttonNumber];
}
void ButtonEventCreator::setNewButtons(blit::ButtonState buttons)
{
newButtons[(int)ButtonsEnum::Up] = buttons & blit::Button::DPAD_UP;
newButtons[(int)ButtonsEnum::Down] = buttons & blit::Button::DPAD_DOWN;
newButtons[(int)ButtonsEnum::Left] = buttons & blit::Button::DPAD_LEFT;
newButtons[(int)ButtonsEnum::Right] = buttons & blit::Button::DPAD_RIGHT;
newButtons[(int)ButtonsEnum::A] = buttons & blit::Button::A;
newButtons[(int)ButtonsEnum::B] = buttons & blit::Button::B;
newButtons[(int)ButtonsEnum::X] = buttons & blit::Button::X;
newButtons[(int)ButtonsEnum::Y] = buttons & blit::Button::Y;
newButtons[(int)ButtonsEnum::Menu] = buttons & blit::Button::MENU;
}
std::vector<ButtonsEnum> ButtonEventCreator::createPressedEvents()
{
std::vector<ButtonsEnum> events;
for (size_t buttonNumber = (int)ButtonsEnum::First; buttonNumber < (int)ButtonsEnum::Size; buttonNumber++)
if (newButtons[buttonNumber] && !oldButtons[buttonNumber])
events.push_back((ButtonsEnum)buttonNumber);
return events;
}