Tramway SDK
ui.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_FRAMEWORK_UI_H
4#define TRAM_SDK_FRAMEWORK_UI_H
5
6#include <render/render.h>
7
8namespace tram::UI {
9
10enum KeyboardKey : uint16_t {
11 // stutter keys
13
14 // number keys
16
17 // programming keys
19
20 // letter keys
23
24 // keys that you press by accident
26
27 // i have no idea what these are
29
30 // stutter keys
32
33 // arrow keys
35
36 // keys right above arrow keys
39
40 // function keys
47
48 // keyoad keys
51
52 // modfier keys
55
56 // i have no idea what this key is
58
59 // mouse keys
63
65};
66
67enum KeyboardAxis : uint16_t {
72};
73
75 STATE_DEFAULT, //< Normal input, events get generated, cursor disabled.
76 STATE_NO_INPUT, //< Inputs get ignored, no cursor.
77 STATE_FLYING, //< Events are skipped, inputs directly move view.
78 STATE_MENU_OPEN, //< Input gets registered, but no events are generated, cursor enabled.
79 STATE_CURSOR //< Normal input, events get generated, but cursor enabled.
80};
81
82typedef uint16_t keyboardaction_t;
83
103
109
110const float CAMERA_SENSITIVITY = 6.0f;
111const float CAMERA_SPEED = 6.0f;
112
113void Init();
114void Uninit();
115void Update();
116void EndFrame();
117
118float GetScreenWidth();
119float GetScreenHeight();
120
121void SetWindowTitle(const char* title);
122void SetWindowSize(int w, int h);
123
124void SetCursor(CursorType cursor);
125
126void SetWebMainLoop(void(*loop_function)(void));
127
129void BindKeyboardKey(KeyboardKey key, void (*action)());
130void BindKeyboardKey(KeyboardKey key, void (*action)(KeyboardKey));
131
135
136void SetInputState(InputState state);
138
139// maybe instead of each platform calling this? these could be fed as pointers
140// into the platform?
141// TODO: fix
142void KeyPress(KeyboardKey key);
143void KeyRelease(KeyboardKey key);
144void KeyCode(uint16_t code);
145void KeyMouse(float x_value, float y_value);
146void KeyScroll(float value);
147void ScreenResize(int w, int h);
148void ScreenClose();
149
151void SetAxisSensitivity(KeyboardAxis axis, float value);
152
156
157std::vector<std::pair<keyboardaction_t, std::vector<KeyboardKey>>> GetAllKeyboardKeyBindings();
158const char* GetKeyboardKeyName(KeyboardKey key);
159
160bool ShouldExit();
161
162}
163
164#endif // TRAM_SDK_FRAMEWORK_UI_H
User interface system.
keyboardaction_t RegisterKeyboardAction(const char *name)
Definition: ui.cpp:382
keyboardaction_t GetKeyboardAction(name_t name)
Definition: ui.cpp:405
const float CAMERA_SENSITIVITY
Definition: ui.h:110
float GetAxisSensitivity(KeyboardAxis key)
Definition: ui.cpp:291
void EndFrame()
Ends the frame and updates the window.
Definition: ui.cpp:188
void Init()
Initializes the UI system.
Definition: ui.cpp:121
float PollKeyboardAxis(KeyboardAxis key)
Checks the state of an axis for the current frame.
Definition: ui.cpp:281
void SetWindowTitle(const char *title)
Definition: ui.cpp:210
void SetWindowSize(int w, int h)
Sets the window size.
Definition: ui.cpp:217
void KeyRelease(KeyboardKey key)
Definition: ui.cpp:313
void Uninit()
Uninitializes the UI system.
Definition: ui.cpp:132
float PollKeyboardAxisDelta(KeyboardAxis key)
Checks the change of an axis for since the last frame.
Definition: ui.cpp:287
bool ShouldExit()
Definition: ui.cpp:356
KeyboardAction
Definition: ui.h:84
@ KEY_ACTION_RIGHT
Definition: ui.h:93
@ KEY_ACTION_ACTIVATE
Definition: ui.h:98
@ KEY_ACTION_UP
Definition: ui.h:90
@ KEY_ACTION_NONE
Definition: ui.h:85
@ KEY_ACTION_SECONDARY
Definition: ui.h:100
@ KEY_ACTION_FORWARD
Definition: ui.h:86
@ KEY_ACTION_STRAFE_RIGHT
Definition: ui.h:89
@ KEY_ACTION_PRIMARY
Definition: ui.h:99
@ KEY_ACTION_STRAFE_LEFT
Definition: ui.h:88
@ KEY_ACTION_FLY
Definition: ui.h:97
@ KEY_ACTION_DOWN
Definition: ui.h:91
@ KEY_ACTION_BACKWARD
Definition: ui.h:87
@ KEY_ACTION_SPRINT
Definition: ui.h:96
@ KEY_ACTION_CROUCH
Definition: ui.h:95
@ KEY_ACTION_JUMP
Definition: ui.h:94
@ KEY_ACTION_LAST
Definition: ui.h:101
@ KEY_ACTION_LEFT
Definition: ui.h:92
void SetWebMainLoop(void(*loop_function)(void))
Definition: ui.cpp:192
InputState GetInputState()
Definition: ui.cpp:269
CursorType
Definition: ui.h:104
@ CURSOR_TEXT
Definition: ui.h:106
@ CURSOR_CLICK
Definition: ui.h:107
@ CURSOR_DEFAULT
Definition: ui.h:105
void KeyScroll(float value)
Definition: ui.cpp:342
const char * GetKeyboardKeyName(KeyboardKey key)
Definition: ui.cpp:448
void SetCursor(CursorType cursor)
Definition: ui.cpp:225
uint16_t keyboardaction_t
Definition: ui.h:82
float GetScreenWidth()
Definition: ui.cpp:201
bool PollKeyboardKey(KeyboardKey key)
Checks the state of a key for the current frame.
Definition: ui.cpp:275
void ScreenResize(int width, int height)
Definition: ui.cpp:346
void Update()
Updates the UI system.
Definition: ui.cpp:140
std::vector< std::pair< keyboardaction_t, std::vector< KeyboardKey > > > GetAllKeyboardKeyBindings()
Definition: ui.cpp:428
float GetScreenHeight()
Definition: ui.cpp:205
void KeyMouse(float xpos, float ypos)
Definition: ui.cpp:327
void BindKeyboardKey(KeyboardKey key, keyboardaction_t action)
Definition: ui.cpp:107
KeyboardAxis
Definition: ui.h:67
@ KEY_MOUSE_X
Definition: ui.h:68
@ KEY_MOUSE_SCROLL
Definition: ui.h:70
@ KEY_MOUSE_Y
Definition: ui.h:69
@ KEY_LASTAXIS
Definition: ui.h:71
void SetAxisSensitivity(KeyboardAxis key, float value)
Definition: ui.cpp:295
void SetInputState(InputState state)
Definition: ui.cpp:239
void KeyCode(uint16_t code)
Definition: ui.cpp:323
void ScreenClose()
Definition: ui.cpp:352
KeyboardKey
Definition: ui.h:10
@ KEY_LEFT_SUPER
Definition: ui.h:53
@ KEY_F14
Definition: ui.h:43
@ KEY_SPACE
Definition: ui.h:12
@ KEY_BACKSPACE
Definition: ui.h:31
@ KEY_5
Definition: ui.h:15
@ KEY_KP_6
Definition: ui.h:46
@ KEY_6
Definition: ui.h:15
@ KEY_F8
Definition: ui.h:42
@ KEY_RIGHT_SUPER
Definition: ui.h:54
@ KEY_KP_0
Definition: ui.h:45
@ KEY_LEFT_CONTROL
Definition: ui.h:53
@ KEY_P
Definition: ui.h:22
@ KEY_DELETE
Definition: ui.h:31
@ KEY_WORLD_2
Definition: ui.h:28
@ KEY_KP_MULTIPLY
Definition: ui.h:49
@ KEY_KP_4
Definition: ui.h:45
@ KEY_LEFT
Definition: ui.h:34
@ KEY_F19
Definition: ui.h:43
@ KEY_KP_5
Definition: ui.h:45
@ KEY_Q
Definition: ui.h:22
@ KEY_LEFT_ALT
Definition: ui.h:53
@ KEY_I
Definition: ui.h:21
@ KEY_F13
Definition: ui.h:42
@ KEY_PAGE_DOWN
Definition: ui.h:37
@ KEY_KP_3
Definition: ui.h:45
@ KEY_F9
Definition: ui.h:42
@ KEY_K
Definition: ui.h:21
@ KEY_F4
Definition: ui.h:41
@ KEY_V
Definition: ui.h:22
@ KEY_KP_1
Definition: ui.h:45
@ KEY_KP_2
Definition: ui.h:45
@ KEY_KP_DECIMAL
Definition: ui.h:49
@ KEY_HOME
Definition: ui.h:37
@ KEY_E
Definition: ui.h:21
@ KEY_END
Definition: ui.h:37
@ KEY_KP_ENTER
Definition: ui.h:50
@ KEY_L
Definition: ui.h:21
@ KEY_M
Definition: ui.h:21
@ KEY_DOWN
Definition: ui.h:34
@ KEY_F18
Definition: ui.h:43
@ KEY_KP_SUBTRACT
Definition: ui.h:49
@ KEY_9
Definition: ui.h:15
@ KEY_Z
Definition: ui.h:22
@ KEY_F5
Definition: ui.h:41
@ KEY_RIGHTMOUSE
Definition: ui.h:60
@ KEY_F2
Definition: ui.h:41
@ KEY_O
Definition: ui.h:22
@ KEY_0
Definition: ui.h:15
@ KEY_PRINT_SCREEN
Definition: ui.h:38
@ KEY_LEFT_SHIFT
Definition: ui.h:53
@ KEY_G
Definition: ui.h:21
@ KEY_A
Definition: ui.h:21
@ KEY_RIGHT_SHIFT
Definition: ui.h:54
@ KEY_S
Definition: ui.h:22
@ KEY_ENTER
Definition: ui.h:31
@ KEY_COMMA
Definition: ui.h:12
@ KEY_MINUS
Definition: ui.h:12
@ KEY_F6
Definition: ui.h:41
@ KEY_APOSTROPHE
Definition: ui.h:12
@ KEY_SEMICOLON
Definition: ui.h:18
@ KEY_KP_8
Definition: ui.h:46
@ KEY_7
Definition: ui.h:15
@ KEY_KP_DIVIDE
Definition: ui.h:49
@ KEY_F17
Definition: ui.h:43
@ KEY_F11
Definition: ui.h:42
@ KEY_KP_ADD
Definition: ui.h:49
@ KEY_NUM_LOCK
Definition: ui.h:38
@ KEY_WORLD_1
Definition: ui.h:28
@ KEY_F22
Definition: ui.h:44
@ KEY_SLASH
Definition: ui.h:12
@ KEY_TAB
Definition: ui.h:31
@ KEY_N
Definition: ui.h:22
@ KEY_F20
Definition: ui.h:44
@ KEY_F23
Definition: ui.h:44
@ KEY_X
Definition: ui.h:22
@ KEY_PAGE_UP
Definition: ui.h:37
@ KEY_F12
Definition: ui.h:42
@ KEY_INSERT
Definition: ui.h:31
@ KEY_RIGHT
Definition: ui.h:34
@ KEY_LEFTMOUSE
Definition: ui.h:61
@ KEY_2
Definition: ui.h:15
@ KEY_8
Definition: ui.h:15
@ KEY_4
Definition: ui.h:15
@ KEY_F24
Definition: ui.h:44
@ KEY_KP_EQUAL
Definition: ui.h:50
@ KEY_B
Definition: ui.h:21
@ KEY_SCROLL_LOCK
Definition: ui.h:38
@ KEY_J
Definition: ui.h:21
@ KEY_F16
Definition: ui.h:43
@ KEY_ESCAPE
Definition: ui.h:31
@ KEY_F25
Definition: ui.h:44
@ KEY_UP
Definition: ui.h:34
@ KEY_MENU
Definition: ui.h:57
@ KEY_GRAVE_ACCENT
Definition: ui.h:25
@ KEY_F21
Definition: ui.h:44
@ KEY_F3
Definition: ui.h:41
@ KEY_PERIOD
Definition: ui.h:12
@ KEY_Y
Definition: ui.h:22
@ KEY_F
Definition: ui.h:21
@ KEY_D
Definition: ui.h:21
@ KEY_3
Definition: ui.h:15
@ KEY_BACKSLASH
Definition: ui.h:25
@ KEY_C
Definition: ui.h:21
@ KEY_LEFT_BRACKET
Definition: ui.h:25
@ KEY_R
Definition: ui.h:22
@ KEY_T
Definition: ui.h:22
@ KEY_U
Definition: ui.h:22
@ KEY_KP_7
Definition: ui.h:46
@ KEY_F1
Definition: ui.h:41
@ KEY_CAPS_LOCK
Definition: ui.h:38
@ KEY_F7
Definition: ui.h:42
@ KEY_RIGHT_BRACKET
Definition: ui.h:25
@ KEY_KP_9
Definition: ui.h:46
@ KEY_1
Definition: ui.h:15
@ KEY_EQUAL
Definition: ui.h:18
@ KEY_RIGHT_CONTROL
Definition: ui.h:54
@ KEY_F15
Definition: ui.h:43
@ KEY_H
Definition: ui.h:21
@ KEY_PAUSE
Definition: ui.h:38
@ KEY_W
Definition: ui.h:22
@ KEY_LASTKEY
Definition: ui.h:64
@ KEY_MIDDLEMOUSE
Definition: ui.h:62
@ KEY_RIGHT_ALT
Definition: ui.h:54
@ KEY_F10
Definition: ui.h:42
const float CAMERA_SPEED
Definition: ui.h:111
void KeyPress(KeyboardKey key)
Definition: ui.cpp:299
name_t GetKeyboardActionName(keyboardaction_t type)
Definition: ui.cpp:420
InputState
Definition: ui.h:74
@ STATE_NO_INPUT
Definition: ui.h:76
@ STATE_CURSOR
Definition: ui.h:79
@ STATE_FLYING
Definition: ui.h:77
@ STATE_DEFAULT
Definition: ui.h:75
@ STATE_MENU_OPEN
Definition: ui.h:78
Interned string type.
Definition: uid.h:10