forked from gameprogcpp/code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInputDetector.cpp
More file actions
130 lines (109 loc) · 3.23 KB
/
Copy pathInputDetector.cpp
File metadata and controls
130 lines (109 loc) · 3.23 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "InputDetector.h"
#include "InputSystem.h"
// KeyDetector
KeyDetector::KeyDetector(SDL_Scancode code) : code(code)
{
}
bool KeyDetector::GetBoolValue(const InputState & state) const
{
return state.Keyboard.GetKeyValue(code);
}
ButtonState KeyDetector::GetButtonValue(const InputState & state) const
{
return state.Keyboard.GetKeyState(code);
}
float KeyDetector::GetFloatValue(const InputState & state) const
{
return GetBoolValue(state) ? 1 : 0;
}
Vector2 KeyDetector::GetAxisValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
// MouseDetector
MouseDetector::MouseDetector(int button) : button(button)
{
}
bool MouseDetector::GetBoolValue(const InputState & state) const
{
return state.Mouse.GetButtonValue(button);
}
ButtonState MouseDetector::GetButtonValue(const InputState & state) const
{
return state.Mouse.GetButtonState(button);
}
float MouseDetector::GetFloatValue(const InputState & state) const
{
return GetBoolValue(state) ? 1 : 0;
}
Vector2 MouseDetector::GetAxisValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
// ControllerButtonDetector
ControllerButtonDetector::ControllerButtonDetector(SDL_GameControllerButton button) : button(button)
{
}
bool ControllerButtonDetector::GetBoolValue(const InputState & state) const
{
return state.Controller.GetButtonValue(button);
}
ButtonState ControllerButtonDetector::GetButtonValue(const InputState & state) const
{
return state.Controller.GetButtonState(button);
}
float ControllerButtonDetector::GetFloatValue(const InputState & state) const
{
return GetBoolValue(state) ? 1 : 0;
}
Vector2 ControllerButtonDetector::GetAxisValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
// ControllerStickDetector
ControllerStickDetector::ControllerStickDetector(ControllerDirection direction) : direction(direction)
{
}
bool ControllerStickDetector::GetBoolValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
ButtonState ControllerStickDetector::GetButtonValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
float ControllerStickDetector::GetFloatValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
Vector2 ControllerStickDetector::GetAxisValue(const InputState & state) const
{
if (direction == ControllerDirection::Left) {
return state.Controller.GetLeftStick();
} else {
return state.Controller.GetRightStick();
}
}
ControllerTriggerDetector::ControllerTriggerDetector(ControllerDirection direction) : direction(direction)
{
}
bool ControllerTriggerDetector::GetBoolValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
ButtonState ControllerTriggerDetector::GetButtonValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}
float ControllerTriggerDetector::GetFloatValue(const InputState & state) const
{
if (direction == ControllerDirection::Left) {
return state.Controller.GetLeftTrigger();
} else {
return state.Controller.GetRightTrigger();
}
}
Vector2 ControllerTriggerDetector::GetAxisValue(const InputState & state) const
{
throw std::logic_error("unsupported operation");
}