Fission FSN
Loading...
Searching...
No Matches
fsIInputManager.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 3/3/2014 16:26
4*
5* File: fsIInputManager.h
6*
7* Author: Mick Waites
8*
9* Purpose: Generating events from user input and pushing the
10* events to any listeners.
11*
12*********************************************************************/
13
14#ifndef fsIInputManagerhdr
15#define fsIInputManagerhdr
16
17#include <vector>
18
19#include <fsCore/fsPoint.h>
21
23#include "fsINode.h"
24
25class fsCInputPoint;
26class fsCEntity;
27class fsCInputSession;
29class fsCTextEntry;
30
31class fsIInputManager : public fsIMessageDispatcher, public fsTSingletonBackend<fsIInputManager>
32{
34
35public:
36
37 void ondDPADClickEvent(fsPoint pPos, fsBool pDown);
38 enum
39 {
46
52
53 };
54
55 static fsBool DPADKey(fsS32 pKeyCode)
56 {
57 return (eKEY_DPAD_LEFT <= pKeyCode) && (pKeyCode <= eKEY_DPAD_CENTRE);
58
59 }
60
61 enum
62 {
66 };
67
69 {
74
75 void s32Save(fsStr& pSaveStr, fsS32 pVal);
76 fsS32 s32Load(fsStr& pLoadStr);
77 void boolSave(fsStr& pSaveStr, fsBool pVal);
78 fsBool boolLoad(fsStr& pLoadStr);
79 void strSave(fsStr& pSaveStr, const fsStr& pVal);
80 fsStr strLoad(fsStr& pLoadStr);
81 void pointSave(fsStr& pSaveStr, const fsPoint& pVal);
82 fsPoint pointLoad(fsStr& pLoadStr);
83
84 virtual sClonableMessageParameters* clone() const = 0;
85 virtual void saveStr(fsStr& pSaveStr) = 0;
86 static sClonableMessageParameters* create(fsStr& pSaveStr);
87 };
88
90 {
91 sDPADMsgParam(fsPoint pPos, fsS32 pId, fsBool pDown) : mPos(pPos), mId(pId), mDown(pDown) {}
92
93 sDPADMsgParam(fsStr& pLoadStr);
94
95 sClonableMessageParameters* clone() const override;
96 void saveStr(fsStr& pSaveStr) override;
97
101 };
102
104 {
105 sPointerMsgParam() : mPos(0, 0), mIdx(0), mDown(false), mStealableFrom(nullptr)
106 {
107 }
108
109 sPointerMsgParam(fsStr& pLoadStr);
110
111 sClonableMessageParameters* clone() const override;
112 void saveStr(fsStr& pSaveStr) override;
113
118 };
119
121 {
124 fsS32 pKey,
125 fsBool pPressed,
126 fsBool pAltKeyDown,
127 fsBool pShiftKeyDown,
128 fsBool pCommandDown,
129 fsS64 pTime) :
130 mKey(pKey),
131 mPressed(pPressed),
132 mAltKeyChanged(pAltKeyDown),
133 mShiftKeyChanged(pShiftKeyDown),
134 mCommandChanged(pCommandDown),
135 mTime(pTime)
136 {
137 }
138
139 sKeyboardMsgParam(fsStr& pLoadStr);
140
141 sClonableMessageParameters* clone() const override;
142 void saveStr(fsStr& pSaveStr) override;
143
150 };
151
153 {
155 {
156 }
157
158 sFrameUpdateParam(fsStr& pLoadStr);
159
160 sClonableMessageParameters* clone() const override;
161 void saveStr(fsStr& pSaveStr) override;
162
164 };
165
173
175 static const fsCUniqueId mKeyUpMsg;
177
178
179
180 fsBool keyDecode(fsS32& pKeyCode);
181 void keyDownEvent(sKeyboardMsgParam& pKeyboardEvent);
182 void keyUpEvent(sKeyboardMsgParam& pKeyboardEvent);
183
184
185 fsPoint const& mousePosGet() const;
186 void mouseEvent(sPointerMsgParam const& pEvent);
187 void mouseUpDownEvent(sPointerMsgParam const& pEvent);
188
189 void keyEvent(sKeyboardMsgParam const& pEvent);
190
191 fsS32 frameReady(fsS32 pDeltaMs);
192
193 void messageDispatchLocal(const fsCUniqueId& pMessageType, const sClonableMessageParameters& pParam);
194
195 virtual fsS32 pointerTypeGet() const = 0;
196 virtual fsBool hasPhysicalKeyboardGet() const = 0;
197
198 fsS32 maxInputPointsGet() const;
199
200 void update(fsS32 pDeltaMs);
201
202protected:
203
205
206 void postCreateDo() override { initialise(); }
207 void preDestroyDo() override { uninitialise(); }
208
209 virtual fsBool keyDecodeDo(fsS32& pKeyCode) = 0;
210
211 virtual void pollKeys() {}
212
213 static void altEnterHandle();
214
215 virtual void initialiseDo() = 0;
216 virtual void uninitialiseDo() = 0;
217
219 virtual ~fsIInputManager();
220
221 std::vector<fsS32> mPressedKeys;
222 std::vector<fsS32> mTypedChars;
223 std::vector<sDPADMsgParam> mDPADPresses;
224 std::vector<fsCInputPoint*> mInputPoints;
225
227
231
232 std::map<fsS32, fsS64> mKeysDown;
233
234
235private:
236
237 void playback();
238
239 void pointerEventsProcess();
240 void keyboardEventsProcess();
241
242 void initialise();
243 void uninitialise();
244
245 fsCInputSession* mInputSession;
246 fsPoint mMousePos;
247
248};
249
250#endif
Definition fsCEntity.h:39
Definition fsCInputPoint.h:20
Definition fsCInputSession.h:19
Definition fsCTextEntryComponent.h:23
Definition fsCTextEntry.h:27
Definition fsCUniqueId.h:21
void keyEvent(sKeyboardMsgParam const &pEvent)
Definition fsIInputManager.cpp:70
fsBool mShiftKeyDown
Definition fsIInputManager.h:229
static const fsCUniqueId mPointerDownMsg
Definition fsIInputManager.h:167
fsS32 frameReady(fsS32 pDeltaMs)
Definition fsIInputManager.cpp:304
static fsBool DPADKey(fsS32 pKeyCode)
Definition fsIInputManager.h:55
static const fsCUniqueId mDPADUpMsg
Definition fsIInputManager.h:172
fsBool mCommandDown
Definition fsIInputManager.h:230
static const fsCUniqueId mKeyDownMsg
Definition fsIInputManager.h:174
virtual void pollKeys()
Definition fsIInputManager.h:211
virtual fsBool keyDecodeDo(fsS32 &pKeyCode)=0
static const fsCUniqueId mTypedCharMsg
Definition fsIInputManager.h:176
void keyUpEvent(sKeyboardMsgParam &pKeyboardEvent)
Definition fsIInputManager.cpp:111
virtual fsS32 pointerTypeGet() const =0
fsBool mAltKeyDown
Definition fsIInputManager.h:228
void postCreateDo() override
Definition fsIInputManager.h:206
void update(fsS32 pDeltaMs)
Definition fsIInputManager.cpp:329
void mouseEvent(sPointerMsgParam const &pEvent)
Definition fsIInputManager.cpp:65
std::vector< sDPADMsgParam > mDPADPresses
Definition fsIInputManager.h:223
virtual void uninitialiseDo()=0
static const fsCUniqueId mKeyUpMsg
Definition fsIInputManager.h:175
static void altEnterHandle()
Definition fsIInputManager.cpp:294
fsBool keyDecode(fsS32 &pKeyCode)
Definition fsIInputManager.cpp:82
fsIInputManager()
Definition fsIInputManager.cpp:428
virtual void initialiseDo()=0
fsS32 mMaxInputPoints
Definition fsIInputManager.h:226
static const fsCUniqueId mDPADDownMsg
Definition fsIInputManager.h:171
fsPoint const & mousePosGet() const
Definition fsIInputManager.cpp:54
@ ePOINTER_TYPE_MULTI_TOUCH
Definition fsIInputManager.h:65
@ ePOINTER_TYPE_MOUSE
Definition fsIInputManager.h:63
@ ePOINTER_TYPE_SINGLE_TOUCH
Definition fsIInputManager.h:64
void messageDispatchLocal(const fsCUniqueId &pMessageType, const sClonableMessageParameters &pParam)
Definition fsIInputManager.cpp:284
std::vector< fsS32 > mPressedKeys
Definition fsIInputManager.h:221
static fsIInputManager * backendInstanceCreate()
Definition fsIInputManager.cpp:423
static const fsCUniqueId mPointerDownStealMsg
Definition fsIInputManager.h:166
void mouseUpDownEvent(sPointerMsgParam const &pEvent)
Definition fsIInputManager.cpp:59
void preDestroyDo() override
Definition fsIInputManager.h:207
std::vector< fsCInputPoint * > mInputPoints
Definition fsIInputManager.h:224
static const fsCUniqueId mPointerMoveMsg
Definition fsIInputManager.h:169
static const fsCUniqueId mFrameUpdateMsg
Definition fsIInputManager.h:170
fsS32 maxInputPointsGet() const
Definition fsIInputManager.cpp:299
virtual ~fsIInputManager()
Definition fsIInputManager.cpp:437
void keyDownEvent(sKeyboardMsgParam &pKeyboardEvent)
Definition fsIInputManager.cpp:87
static const fsCUniqueId mPointerUpMsg
Definition fsIInputManager.h:168
std::vector< fsS32 > mTypedChars
Definition fsIInputManager.h:222
void ondDPADClickEvent(fsPoint pPos, fsBool pDown)
Definition fsIInputManager.cpp:49
virtual fsBool hasPhysicalKeyboardGet() const =0
@ eKEY_CODE_CURSOR_DOWN
Definition fsIInputManager.h:45
@ eKEY_CODE_CURSOR_LEFT
Definition fsIInputManager.h:42
@ eKEY_DPAD_RIGHT
Definition fsIInputManager.h:48
@ eKEY_DPAD_UP
Definition fsIInputManager.h:49
@ eKEY_CODE_CURSOR_UP
Definition fsIInputManager.h:44
@ eKEY_CODE_CURSOR_RIGHT
Definition fsIInputManager.h:43
@ eKEY_DPAD_DOWN
Definition fsIInputManager.h:50
@ eKEY_DPAD_CENTRE
Definition fsIInputManager.h:51
@ eKEY_CODE_BACKSPACE
Definition fsIInputManager.h:41
@ eKEY_CODE_ENTER
Definition fsIInputManager.h:40
@ eKEY_DPAD_LEFT
Definition fsIInputManager.h:47
std::map< fsS32, fsS64 > mKeysDown
Definition fsIInputManager.h:232
fsIMessageDispatcher()
Definition fsIMessageDispatcher.cpp:162
Definition fsIMessageListener.h:24
Definition fsStr.h:23
static void create()
Definition fsTSingletonBackend.h:61
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
long long fsS64
Definition fsBaseTypes.h:23
Definition fsIInputManager.h:69
fsBool boolLoad(fsStr &pLoadStr)
Definition fsIInputManager.cpp:159
static const fsS32 mFrameUpdateMessageTypeId
Definition fsIInputManager.h:72
virtual sClonableMessageParameters * clone() const =0
void pointSave(fsStr &pSaveStr, const fsPoint &pVal)
Definition fsIInputManager.cpp:149
static const fsS32 mPointerMessageTypeId
Definition fsIInputManager.h:70
static const fsS32 mDPADMessageTypeId
Definition fsIInputManager.h:73
fsPoint pointLoad(fsStr &pLoadStr)
Definition fsIInputManager.cpp:164
void s32Save(fsStr &pSaveStr, fsS32 pVal)
Definition fsIInputManager.cpp:139
virtual void saveStr(fsStr &pSaveStr)=0
fsStr strLoad(fsStr &pLoadStr)
Definition fsIInputManager.cpp:172
void strSave(fsStr &pSaveStr, const fsStr &pVal)
Definition fsIInputManager.cpp:144
static const fsS32 mKeyboardMessageTypeId
Definition fsIInputManager.h:71
void boolSave(fsStr &pSaveStr, fsBool pVal)
Definition fsIInputManager.cpp:133
fsS32 s32Load(fsStr &pLoadStr)
Definition fsIInputManager.cpp:154
fsBool mDown
Definition fsIInputManager.h:99
sClonableMessageParameters * clone() const override
Definition fsIInputManager.cpp:241
fsS32 mId
Definition fsIInputManager.h:98
sDPADMsgParam(fsPoint pPos, fsS32 pId, fsBool pDown)
Definition fsIInputManager.h:91
void saveStr(fsStr &pSaveStr) override
Definition fsIInputManager.cpp:246
fsPoint mPos
Definition fsIInputManager.h:100
sClonableMessageParameters * clone() const override
Definition fsIInputManager.cpp:177
sFrameUpdateParam(fsS32 pTime)
Definition fsIInputManager.h:154
void saveStr(fsStr &pSaveStr) override
Definition fsIInputManager.cpp:189
fsS32 mFrameDelta
Definition fsIInputManager.h:163
Definition fsIInputManager.h:121
void saveStr(fsStr &pSaveStr) override
Definition fsIInputManager.cpp:209
fsS64 mTime
Definition fsIInputManager.h:149
fsBool mCommandChanged
Definition fsIInputManager.h:148
fsBool mShiftKeyChanged
Definition fsIInputManager.h:147
fsBool mPressed
Definition fsIInputManager.h:145
fsBool mAltKeyChanged
Definition fsIInputManager.h:146
sClonableMessageParameters * clone() const override
Definition fsIInputManager.cpp:195
fsS32 mKey
Definition fsIInputManager.h:144
sKeyboardMsgParam()
Definition fsIInputManager.h:122
sKeyboardMsgParam(fsS32 pKey, fsBool pPressed, fsBool pAltKeyDown, fsBool pShiftKeyDown, fsBool pCommandDown, fsS64 pTime)
Definition fsIInputManager.h:123
Definition fsIInputManager.h:104
fsS32 mIdx
Definition fsIInputManager.h:115
fsPoint mPos
Definition fsIInputManager.h:114
fsIMessageListener * mStealableFrom
Definition fsIInputManager.h:117
sPointerMsgParam()
Definition fsIInputManager.h:105
fsBool mDown
Definition fsIInputManager.h:116
void saveStr(fsStr &pSaveStr) override
Definition fsIInputManager.cpp:233
sClonableMessageParameters * clone() const override
Definition fsIInputManager.cpp:216
Definition fsIMessageDispatcher.h:32
Definition fsPoint.h:17