Stardew Engine
Loading...
Searching...
No Matches
InputContext.h
Go to the documentation of this file.
1#ifndef INPUTCONTEXT_H
2#define INPUTCONTEXT_H
3
4#include "DynArray.h"
5#include <stdbool.h>
6#include "HandleDefs.h"
7
8#define KEYSTROKE_LEFT 263
9#define KEYSTROKE_RIGHT 262
10#define KEYSTROKE_UP 265
11#define KEYSTROKE_DOWN 264
12#define KEYSTROKE_BACKSPACE 259
13#define KEYSTROKE_ENTER 257
14
15typedef enum
16{
18 Button
20
29
37
45
46typedef enum
47{
49 Axis_Y
51
52typedef enum
53{
57
58typedef struct InputMapping
59{
61 char* name;
62 union
63 {
64 struct
65 {
70 union
71 {
72 struct
73 {
76 struct
77 {
78 int button;
80 struct
81 {
82 int button;
84 struct
85 {
90 // in future, game pad for example
92 struct
93 {
94
96 double fCurrent;
97 union
98 {
99 struct
100 {
103 struct
104 {
108 struct
109 {
113
117
118#define MAX_MAPPINGS 64
119
126
127#define MAX_KEYS_DOWN_PER_FRAME 256
135
159
160/*
161 Called by the glfw callbacks
162*/
163void In_RecieveKeyboardKey(InputContext* context, int key, int scancode, int action, int mods);
164void In_RecieveMouseMove(InputContext* context, double xposIn, double yposIn);
165void In_RecieveMouseButton(InputContext* context, int button, int action, int mods);
166void In_FramebufferResize(InputContext* context, int width, int height);
167void In_RecieveScroll(InputContext* context, double xoffset, double yoffset);
168void In_SetControllerPresent(int controllerNo);
169
170/*
171 Called by the game framework
172*/
173void In_EndFrame(InputContext* context);
175
176/*
177 Called by game code and/or "game layer" level code
178*/
179
185
191
192struct AxisBinding In_FindAxisMapping(InputContext* context, const char* name);
193struct ButtonBinding In_FindButtonMapping(InputContext* context, const char* name);
194
195float In_GetAxisValue(InputContext* context, struct AxisBinding binding);
196bool In_GetButtonValue(InputContext* context, struct ButtonBinding binding);
197bool In_GetButtonPressThisFrame(InputContext* context, struct ButtonBinding binding);
198bool In_GetButtonReleaseThisFrame(InputContext* context, struct ButtonBinding binding);
199
211
212void In_GetMask(struct ActiveInputBindingsMask* pOutMask, InputContext* pCtx);
213void In_SetMask(struct ActiveInputBindingsMask* mask, InputContext* pCtx);
214void In_ActivateButtonBinding(struct ButtonBinding binding, struct ActiveInputBindingsMask* pMask);
215void In_ActivateAxisBinding(struct AxisBinding binding, struct ActiveInputBindingsMask* pMask);
216void In_DeactivateButtonBinding(struct ButtonBinding binding, struct ActiveInputBindingsMask* pMask);
217void In_DeactivateAxisBinding(struct AxisBinding binding, struct ActiveInputBindingsMask* pMask);
218
219#endif // !INPUTCONTEXT_H
WhichAxis
Definition InputContext.h:47
@ Axis_Y
Definition InputContext.h:49
@ Axis_X
Definition InputContext.h:48
void In_RecieveKeyboardKey(InputContext *context, int key, int scancode, int action, int mods)
Definition InputContext.c:308
void In_ActivateAxisBinding(struct AxisBinding binding, struct ActiveInputBindingsMask *pMask)
Definition InputContext.c:776
void In_DeactivateAxisBinding(struct AxisBinding binding, struct ActiveInputBindingsMask *pMask)
Definition InputContext.c:814
void In_DeactivateButtonBinding(struct ButtonBinding binding, struct ActiveInputBindingsMask *pMask)
Definition InputContext.c:793
bool In_GetButtonPressThisFrame(InputContext *context, struct ButtonBinding binding)
Definition InputContext.c:832
bool In_GetButtonValue(InputContext *context, struct ButtonBinding binding)
Definition InputContext.c:170
ControllerAxisType
Definition InputContext.h:39
@ gpAxis_RT
Definition InputContext.h:43
@ gpAxis_LStick
Definition InputContext.h:40
@ gpAxis_RStick
Definition InputContext.h:41
@ gpAxis_LT
Definition InputContext.h:42
void In_RecieveScroll(InputContext *context, double xoffset, double yoffset)
Definition InputContext.c:383
struct AxisBinding In_FindAxisMapping(InputContext *context, const char *name)
Definition InputContext.c:99
void In_RecieveMouseButton(InputContext *context, int button, int action, int mods)
Definition InputContext.c:352
InputMappingType
Definition InputContext.h:16
@ Axis
Definition InputContext.h:17
@ Button
Definition InputContext.h:18
float In_GetAxisValue(InputContext *context, struct AxisBinding binding)
Definition InputContext.c:153
#define MAX_MAPPINGS
Definition InputContext.h:118
void In_SetMask(struct ActiveInputBindingsMask *mask, InputContext *pCtx)
Definition InputContext.c:744
bool In_GetButtonReleaseThisFrame(InputContext *context, struct ButtonBinding binding)
Definition InputContext.c:850
void In_GetMask(struct ActiveInputBindingsMask *pOutMask, InputContext *pCtx)
Definition InputContext.c:732
void In_FramebufferResize(InputContext *context, int width, int height)
Definition InputContext.c:377
void In_EndFrame(InputContext *context)
Definition InputContext.c:445
struct ButtonBinding In_FindButtonMapping(InputContext *context, const char *name)
Definition InputContext.c:123
WhichDirection
Definition InputContext.h:53
@ Axis_Pos
Definition InputContext.h:54
@ Axis_Neg
Definition InputContext.h:55
void In_SetControllerPresent(int controllerNo)
Definition InputContext.c:440
ButtonSubType
Definition InputContext.h:22
@ GamepadButton
Definition InputContext.h:25
@ UnknownButton
Definition InputContext.h:27
@ MouseScrollButton
Definition InputContext.h:26
@ KeyboardButton
Definition InputContext.h:24
@ MouseButton
Definition InputContext.h:23
#define MAX_KEYS_DOWN_PER_FRAME
Definition InputContext.h:127
AxisSubType
Definition InputContext.h:31
@ UnknownAxis
Definition InputContext.h:35
@ MouseAxis
Definition InputContext.h:32
@ GamePadAxis
Definition InputContext.h:33
@ MouseScrollAxis
Definition InputContext.h:34
void In_ActivateButtonBinding(struct ButtonBinding binding, struct ActiveInputBindingsMask *pMask)
Definition InputContext.c:756
void In_RecieveMouseMove(InputContext *context, double xposIn, double yposIn)
Definition InputContext.c:333
InputContext In_InitInputContext()
Definition InputContext.c:665
uint64_t u64
Definition IntTypes.h:15
const char *const name
Definition cJSON.h:270
Definition InputContext.h:201
u64 MouseScrollButtonMappings
Definition InputContext.h:205
u64 ControllerAxisMappings
Definition InputContext.h:208
u64 MouseAxisMappings
Definition InputContext.h:207
u64 MouseScrollAxisMappings
Definition InputContext.h:209
u64 MouseButtonMappings
Definition InputContext.h:202
u64 GamepadButtonMappings
Definition InputContext.h:204
u64 KeyboardButtonMappings
Definition InputContext.h:203
Definition InputContext.h:181
int index
Definition InputContext.h:183
AxisSubType type
Definition InputContext.h:182
Definition InputContext.h:187
ButtonSubType type
Definition InputContext.h:188
int index
Definition InputContext.h:189
Definition InputContext.h:137
InputMappingArray Controller
Definition InputContext.h:152
InputMappingArray MouseScrollButtonMappings
Definition InputContext.h:145
InputMappingArray KeyboardButtonMappings
Definition InputContext.h:143
int screenH
Definition InputContext.h:157
InputMappingArray GamepadMappings
Definition InputContext.h:144
InputMappingArray MouseButtonMappings
Definition InputContext.h:142
int screenW
Definition InputContext.h:157
struct TextInputState textInput
Definition InputContext.h:156
InputMappingArray Mouse
Definition InputContext.h:151
struct InputContext::@18 buttonMappings
InputMappingArray MouseScroll
Definition InputContext.h:153
struct InputContext::@19 axisMappings
Definition InputContext.h:121
int size
Definition InputContext.h:123
u64 ActiveMask
Definition InputContext.h:124
Definition InputContext.h:59
double fCurrent
Definition InputContext.h:96
bool bPressThisFrame
Definition InputContext.h:68
int button
Definition InputContext.h:78
struct InputMapping::@6::@8 axisMapping
bool bCurrent
Definition InputContext.h:67
struct InputMapping::@6::@7::@9::@13 mouseScrollButton
struct InputMapping::@6::@8::@14::@15 mouse
struct InputMapping::@6::@7::@9::@12 gamepadBtn
WhichDirection dir
Definition InputContext.h:87
union InputMapping::@6::@7::@9 data
WhichAxis axis
Definition InputContext.h:86
struct InputMapping::@6::@8::@14::@17 mouseScroll
struct InputMapping::@6::@7::@9::@11 mouseBtn
struct InputMapping::@6::@7 ButtonMapping
int keyboadCode
Definition InputContext.h:74
ControllerAxisType type
Definition InputContext.h:105
char * name
Definition InputContext.h:61
AxisSubType type
Definition InputContext.h:95
struct InputMapping::@6::@8::@14::@16 controller
bool bReleaseThisFrame
Definition InputContext.h:69
ButtonSubType type
Definition InputContext.h:66
struct InputMapping::@6::@7::@9::@10 keyboard
InputMappingType type
Definition InputContext.h:60
Definition InputContext.h:129
int nKeystrokesThisFrame
Definition InputContext.h:131
int keystrokes[MAX_KEYS_DOWN_PER_FRAME]
Definition InputContext.h:130
bool shiftModifier
Definition InputContext.h:133
bool capslockModifier
Definition InputContext.h:132