DDraceNetwork Documentation
Loading...
Searching...
No Matches
input.h
Go to the documentation of this file.
1
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2
/* If you are missing that file, acquire a complete release at teeworlds.com. */
3
#ifndef ENGINE_INPUT_H
4
#define ENGINE_INPUT_H
5
6
#include "
kernel.h
"
7
8
#include <
base/types.h
>
9
#include <
base/vmath.h
>
10
11
#include <chrono>
12
#include <cstdint>
13
#include <functional>
14
#include <string>
15
#include <vector>
16
17
class
IInput
:
public
IInterface
18
{
19
MACRO_INTERFACE
(
"input"
)
20
public:
21
class
CEvent
22
{
23
public
:
24
int
m_Flags
;
25
int
m_Key
;
26
uint32_t
m_InputCount
;
27
char
m_aText
[32];
// SDL_TEXTINPUTEVENT_TEXT_SIZE
28
};
29
30
enum
31
{
32
FLAG_PRESS
= 1 << 0,
33
FLAG_RELEASE
= 1 << 1,
34
FLAG_TEXT
= 1 << 2,
39
FLAG_REPEAT
= 1 << 3,
40
};
41
enum
ECursorType
42
{
43
CURSOR_NONE
,
44
CURSOR_MOUSE
,
45
CURSOR_JOYSTICK
,
46
};
47
48
// events
49
virtual
void
ConsumeEvents
(std::function<
void
(
const
CEvent
&Event)> Consumer)
const
= 0;
53
virtual
void
Clear
() = 0;
54
59
virtual
float
GetUpdateTime
()
const
= 0;
60
61
// keys
62
virtual
bool
ModifierIsPressed
()
const
= 0;
63
virtual
bool
ShiftIsPressed
()
const
= 0;
64
virtual
bool
AltIsPressed
()
const
= 0;
76
virtual
bool
KeyIsPressed
(
int
Key)
const
= 0;
88
virtual
bool
KeyPress
(
int
Key)
const
= 0;
89
virtual
const
char
*
KeyName
(
int
Key)
const
= 0;
90
virtual
int
FindKeyByName
(
const
char
*pKeyName)
const
= 0;
91
92
// joystick
93
class
IJoystick
94
{
95
public
:
96
virtual
~IJoystick
() =
default
;
97
virtual
int
GetIndex
()
const
= 0;
98
virtual
const
char
*
GetName
()
const
= 0;
99
virtual
int
GetNumAxes
()
const
= 0;
100
virtual
int
GetNumButtons
()
const
= 0;
101
virtual
int
GetNumBalls
()
const
= 0;
102
virtual
int
GetNumHats
()
const
= 0;
103
virtual
float
GetAxisValue
(
int
Axis) = 0;
104
virtual
void
GetHatValue
(
int
Hat,
int
(&aHatKeys)[2]) = 0;
105
virtual
bool
Relative
(
float
*pX,
float
*pY) = 0;
106
virtual
bool
Absolute
(
float
*pX,
float
*pY) = 0;
107
};
108
virtual
size_t
NumJoysticks
()
const
= 0;
109
virtual
IJoystick
*
GetJoystick
(
size_t
Index) = 0;
110
virtual
IJoystick
*
GetActiveJoystick
() = 0;
111
virtual
void
SetActiveJoystick
(
size_t
Index) = 0;
112
113
// mouse
114
virtual
vec2
NativeMousePos
()
const
= 0;
115
virtual
bool
NativeMousePressed
(
int
Index)
const
= 0;
116
virtual
void
MouseModeRelative
() = 0;
117
virtual
void
MouseModeAbsolute
() = 0;
118
virtual
bool
MouseRelative
(
float
*pX,
float
*pY) = 0;
119
120
// touch
127
class
CTouchFinger
128
{
129
friend
class
CInput
;
130
131
int64_t
m_DeviceId
;
132
int64_t
m_FingerId
;
133
134
public
:
135
bool
operator==
(
const
CTouchFinger
&Other)
const
{
return
m_DeviceId
== Other.
m_DeviceId
&&
m_FingerId
== Other.
m_FingerId
; }
136
bool
operator!=
(
const
CTouchFinger
&Other)
const
{
return
!(*
this
== Other); }
137
};
138
141
class
CTouchFingerState
142
{
143
public
:
147
CTouchFinger
m_Finger
;
152
vec2
m_Position
;
159
vec2
m_Delta
;
163
std::chrono::nanoseconds
m_PressTime
;
164
};
165
172
virtual
const
std::vector<CTouchFingerState> &
TouchFingerStates
()
const
= 0;
178
virtual
void
ClearTouchDeltas
() = 0;
179
180
// clipboard
181
virtual
std::string
GetClipboardText
() = 0;
182
virtual
void
SetClipboardText
(
const
char
*pText) = 0;
183
184
// text editing
185
virtual
void
StartTextInput
() = 0;
186
virtual
void
StopTextInput
() = 0;
187
virtual
void
EnsureScreenKeyboardShown
() = 0;
188
virtual
const
char
*
GetComposition
()
const
= 0;
189
virtual
bool
HasComposition
()
const
= 0;
190
virtual
int
GetCompositionCursor
()
const
= 0;
191
virtual
int
GetCompositionLength
()
const
= 0;
192
virtual
const
char
*
GetCandidate
(
int
Index)
const
= 0;
193
virtual
int
GetCandidateCount
()
const
= 0;
194
virtual
int
GetCandidateSelectedIndex
()
const
= 0;
195
virtual
void
SetCompositionWindowPosition
(
float
X,
float
Y,
float
H) = 0;
196
197
virtual
bool
GetDropFile
(
char
*aBuf,
int
Len) = 0;
198
199
ECursorType
CursorRelative
(
float
*pX,
float
*pY)
200
{
201
if
(
MouseRelative
(pX, pY))
202
return
CURSOR_MOUSE
;
203
IJoystick
*pJoystick =
GetActiveJoystick
();
204
if
(pJoystick && pJoystick->
Relative
(pX, pY))
205
return
CURSOR_JOYSTICK
;
206
return
CURSOR_NONE
;
207
}
208
};
209
210
class
IEngineInput
:
public
IInput
211
{
212
MACRO_INTERFACE
(
"engineinput"
)
213
public:
214
virtual
void
Init
() = 0;
215
void
Shutdown
() override = 0;
216
virtual
int
Update
() = 0;
217
};
218
219
extern
IEngineInput
*
CreateEngineInput
();
220
221
#endif
IEngineInput
Definition
input.h:211
IEngineInput::Shutdown
void Shutdown() override=0
IEngineInput::Update
virtual int Update()=0
IEngineInput::Init
virtual void Init()=0
IInput::CEvent
Definition
input.h:22
IInput::CEvent::m_aText
char m_aText[32]
Definition
input.h:27
IInput::CEvent::m_Key
int m_Key
Definition
input.h:25
IInput::CEvent::m_Flags
int m_Flags
Definition
input.h:24
IInput::CEvent::m_InputCount
uint32_t m_InputCount
Definition
input.h:26
IInput::CTouchFingerState
Definition
input.h:142
IInput::CTouchFingerState::m_PressTime
std::chrono::nanoseconds m_PressTime
Definition
input.h:163
IInput::CTouchFingerState::m_Delta
vec2 m_Delta
Definition
input.h:159
IInput::CTouchFingerState::m_Finger
CTouchFinger m_Finger
Definition
input.h:147
IInput::CTouchFingerState::m_Position
vec2 m_Position
Definition
input.h:152
IInput::CTouchFinger
Definition
input.h:128
IInput::CTouchFinger::CInput
friend class CInput
Definition
input.h:129
IInput::CTouchFinger::m_DeviceId
int64_t m_DeviceId
Definition
input.h:131
IInput::CTouchFinger::operator==
bool operator==(const CTouchFinger &Other) const
Definition
input.h:135
IInput::CTouchFinger::m_FingerId
int64_t m_FingerId
Definition
input.h:132
IInput::CTouchFinger::operator!=
bool operator!=(const CTouchFinger &Other) const
Definition
input.h:136
IInput::IJoystick
Definition
input.h:94
IInput::IJoystick::GetNumBalls
virtual int GetNumBalls() const =0
IInput::IJoystick::GetName
virtual const char * GetName() const =0
IInput::IJoystick::GetNumButtons
virtual int GetNumButtons() const =0
IInput::IJoystick::Absolute
virtual bool Absolute(float *pX, float *pY)=0
IInput::IJoystick::~IJoystick
virtual ~IJoystick()=default
IInput::IJoystick::GetNumAxes
virtual int GetNumAxes() const =0
IInput::IJoystick::Relative
virtual bool Relative(float *pX, float *pY)=0
IInput::IJoystick::GetIndex
virtual int GetIndex() const =0
IInput::IJoystick::GetNumHats
virtual int GetNumHats() const =0
IInput::IJoystick::GetAxisValue
virtual float GetAxisValue(int Axis)=0
IInput::IJoystick::GetHatValue
virtual void GetHatValue(int Hat, int(&aHatKeys)[2])=0
IInput
Definition
input.h:18
IInput::ECursorType
ECursorType
Definition
input.h:42
IInput::CURSOR_MOUSE
@ CURSOR_MOUSE
Definition
input.h:44
IInput::CURSOR_NONE
@ CURSOR_NONE
Definition
input.h:43
IInput::CURSOR_JOYSTICK
@ CURSOR_JOYSTICK
Definition
input.h:45
IInput::EnsureScreenKeyboardShown
virtual void EnsureScreenKeyboardShown()=0
IInput::GetCompositionLength
virtual int GetCompositionLength() const =0
IInput::MouseModeAbsolute
virtual void MouseModeAbsolute()=0
IInput::StopTextInput
virtual void StopTextInput()=0
IInput::FindKeyByName
virtual int FindKeyByName(const char *pKeyName) const =0
IInput::GetCandidateSelectedIndex
virtual int GetCandidateSelectedIndex() const =0
IInput::GetJoystick
virtual IJoystick * GetJoystick(size_t Index)=0
IInput::GetCompositionCursor
virtual int GetCompositionCursor() const =0
IInput::GetCandidateCount
virtual int GetCandidateCount() const =0
IInput::GetCandidate
virtual const char * GetCandidate(int Index) const =0
IInput::GetClipboardText
virtual std::string GetClipboardText()=0
IInput::NativeMousePressed
virtual bool NativeMousePressed(int Index) const =0
IInput::NativeMousePos
virtual vec2 NativeMousePos() const =0
IInput::AltIsPressed
virtual bool AltIsPressed() const =0
IInput::ShiftIsPressed
virtual bool ShiftIsPressed() const =0
IInput::SetActiveJoystick
virtual void SetActiveJoystick(size_t Index)=0
IInput::SetClipboardText
virtual void SetClipboardText(const char *pText)=0
IInput::FLAG_TEXT
@ FLAG_TEXT
Definition
input.h:34
IInput::FLAG_REPEAT
@ FLAG_REPEAT
Definition
input.h:39
IInput::FLAG_RELEASE
@ FLAG_RELEASE
Definition
input.h:33
IInput::FLAG_PRESS
@ FLAG_PRESS
Definition
input.h:32
IInput::NumJoysticks
virtual size_t NumJoysticks() const =0
IInput::MouseModeRelative
virtual void MouseModeRelative()=0
IInput::SetCompositionWindowPosition
virtual void SetCompositionWindowPosition(float X, float Y, float H)=0
IInput::StartTextInput
virtual void StartTextInput()=0
IInput::ConsumeEvents
virtual void ConsumeEvents(std::function< void(const CEvent &Event)> Consumer) const =0
IInput::TouchFingerStates
virtual const std::vector< CTouchFingerState > & TouchFingerStates() const =0
IInput::CursorRelative
ECursorType CursorRelative(float *pX, float *pY)
Definition
input.h:199
IInput::KeyIsPressed
virtual bool KeyIsPressed(int Key) const =0
IInput::Clear
virtual void Clear()=0
IInput::MouseRelative
virtual bool MouseRelative(float *pX, float *pY)=0
IInput::ModifierIsPressed
virtual bool ModifierIsPressed() const =0
IInput::GetComposition
virtual const char * GetComposition() const =0
IInput::GetActiveJoystick
virtual IJoystick * GetActiveJoystick()=0
IInput::ClearTouchDeltas
virtual void ClearTouchDeltas()=0
IInput::HasComposition
virtual bool HasComposition() const =0
IInput::KeyPress
virtual bool KeyPress(int Key) const =0
IInput::KeyName
virtual const char * KeyName(int Key) const =0
IInput::GetDropFile
virtual bool GetDropFile(char *aBuf, int Len)=0
IInput::GetUpdateTime
virtual float GetUpdateTime() const =0
IInterface::IInterface
IInterface()
Definition
kernel.h:19
CreateEngineInput
IEngineInput * CreateEngineInput()
Definition
input.cpp:943
kernel.h
MACRO_INTERFACE
#define MACRO_INTERFACE(Name)
Definition
kernel.h:25
types.h
vmath.h
vec2
vector2_base< float > vec2
Definition
vmath.h:161
src
engine
input.h
Generated by
1.16.1