1#ifndef GUM_CONTROLLER_H
2#define GUM_CONTROLLER_H
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
28
29
30
31#define GUM_CONTROLLER_TYPE (GBL_TYPEID (GUM_Controller))
32#define GUM_CONTROLLER(self) (GBL_CAST (GUM_Controller, self))
33#define GUM_CONTROLLER_CLASS(klass) (GBL_CLASS_CAST (GUM_Controller, klass))
34#define GUM_CONTROLLER_CLASSOF(self) (GBL_CLASSOF (GUM_Controller, self))
37#define GBL_SELF_TYPE GUM_Controller
40GBL_FORWARD_DECLARE_STRUCT(GUM_Controller);
42typedef enum : uint8_t {
43 GUM_CONTROLLER_BUTTON_PRESS,
44 GUM_CONTROLLER_BUTTON_RELEASE
45} GUM_CONTROLLER_BUTTON_STATE;
47typedef enum : uint8_t {
52 GUM_CONTROLLER_PRIMARY,
53 GUM_CONTROLLER_SECONDARY,
54 GUM_CONTROLLER_TERTIARY
55} GUM_CONTROLLER_BUTTON_ID;
59
60
61
62
63
64GBL_CLASS_DERIVE_EMPTY(GUM_Controller, GUM_Widget)
68
69
70
73
74
75
76
77
79GBL_INSTANCE_DERIVE(GUM_Controller, GUM_Widget)
81 GUM_Button *pSelectedButton;
88GBL_PROPERTIES(GUM_Controller,
89 (controllerId, GBL_GENERIC, (READ, WRITE), GBL_UINT8_TYPE),
90 (isKeyboard, GBL_GENERIC, (READ, WRITE), GBL_BOOL_TYPE)
94GblType GUM_Controller_type(
void);
97#define GUM_Controller_create(...) GBL_NEW(GUM_Controller __VA_OPT__(,) __VA_ARGS__)
100
101
102
103
104GBL_EXPORT
void GUM_Controller_sendButton (GBL_SELF, GUM_CONTROLLER_BUTTON_STATE state, GUM_CONTROLLER_BUTTON_ID button) GBL_NOEXCEPT;
107GBL_EXPORT
void GUM_Controller_setSelectedButton (GBL_SELF, GUM_Button *pButton) GBL_NOEXCEPT;
uint8_t controllerId
Which id is this controller associated with.
Definition gumball_controller.h:82
bool isKeyboard
If the controller is a keyboard.
Definition gumball_controller.h:83