Skip to content

Commit c9e3805

Browse files
committed
add pressed and just_pressed and key alias
1 parent c664ee4 commit c9e3805

File tree

3 files changed

+203
-14
lines changed

3 files changed

+203
-14
lines changed

app/main.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
2+
#include "grngame/core/app.h"
3+
#include "grngame/dev/logging.h"
4+
15
int main()
26
{
7+
AppInfo app;
8+
app.name = "Noob - The Factionless";
9+
app.version = "1.0.1";
10+
app.fps = 80.0;
11+
app.window_width = 200;
12+
app.window_height = 200;
13+
app.window_universe_height = 200;
14+
app.window_universe_width = 200;
15+
app.asset_folder = "assets";
16+
app.window_resizable = true;
17+
app.window_fullscreen = false;
18+
app.window_maximised = false;
19+
app.enable_logs = true;
20+
app.log_destination = LOG_TO_CONSOLE;
21+
app.force_universe_scale = true;
22+
EngineStart(&app);
23+
return 0;
324
}

std/input.das

Lines changed: 179 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,206 @@ options gen2
33
require node
44
require grngame_input
55

6+
enum KeyCode {
7+
KEY_A = 4,
8+
KEY_B = 5,
9+
KEY_C = 6,
10+
KEY_D = 7,
11+
KEY_E = 8,
12+
KEY_F = 9,
13+
KEY_G = 10,
14+
KEY_H = 11,
15+
KEY_I = 12,
16+
KEY_J = 13,
17+
KEY_K = 14,
18+
KEY_L = 15,
19+
KEY_M = 16,
20+
KEY_N = 17,
21+
KEY_O = 18,
22+
KEY_P = 19,
23+
KEY_Q = 20,
24+
KEY_R = 21,
25+
KEY_S = 22,
26+
KEY_T = 23,
27+
KEY_U = 24,
28+
KEY_V = 25,
29+
KEY_W = 26,
30+
KEY_X = 27,
31+
KEY_Y = 28,
32+
KEY_Z = 29,
33+
34+
KEY_0 = 39,
35+
KEY_1 = 30,
36+
KEY_2 = 31,
37+
KEY_3 = 32,
38+
KEY_4 = 33,
39+
KEY_5 = 34,
40+
KEY_6 = 35,
41+
KEY_7 = 36,
42+
KEY_8 = 37,
43+
KEY_9 = 38,
44+
45+
KEY_F1 = 58,
46+
KEY_F2 = 59,
47+
KEY_F3 = 60,
48+
KEY_F4 = 61,
49+
KEY_F5 = 62,
50+
KEY_F6 = 63,
51+
KEY_F7 = 64,
52+
KEY_F8 = 65,
53+
KEY_F9 = 66,
54+
KEY_F10 = 67,
55+
KEY_F11 = 68,
56+
KEY_F12 = 69,
57+
58+
KEY_RETURN = 40,
59+
KEY_ESCAPE = 41,
60+
KEY_BACKSPACE = 42,
61+
KEY_TAB = 43,
62+
KEY_SPACE = 44,
63+
KEY_DELETE = 76,
64+
KEY_INSERT = 73,
65+
KEY_HOME = 74,
66+
KEY_END = 77,
67+
KEY_PAGEUP = 75,
68+
KEY_PAGEDOWN = 78,
69+
70+
KEY_UP = 82,
71+
KEY_DOWN = 81,
72+
KEY_LEFT = 80,
73+
KEY_RIGHT = 79,
74+
75+
KEY_LSHIFT = 225,
76+
KEY_RSHIFT = 229,
77+
KEY_LCTRL = 224,
78+
KEY_RCTRL = 228,
79+
KEY_LALT = 226,
80+
KEY_RALT = 230,
81+
KEY_LGUI = 227,
82+
KEY_RGUI = 231,
83+
KEY_CAPS = 57,
84+
85+
KEY_KP0 = 98,
86+
KEY_KP1 = 89,
87+
KEY_KP2 = 90,
88+
KEY_KP3 = 91,
89+
KEY_KP4 = 92,
90+
KEY_KP5 = 93,
91+
KEY_KP6 = 94,
92+
KEY_KP7 = 95,
93+
KEY_KP8 = 96,
94+
KEY_KP9 = 97,
95+
KEY_KP_ENTER = 88,
96+
KEY_KP_PLUS = 87,
97+
KEY_KP_MINUS = 86,
98+
KEY_KP_MUL = 85,
99+
KEY_KP_DIV = 84,
100+
KEY_KP_DOT = 99,
101+
102+
KEY_PRINTSCREEN = 70,
103+
KEY_SCROLLLOCK = 71,
104+
KEY_PAUSE = 72,
105+
KEY_MENU = 118
106+
}
107+
108+
enum PadButton {
109+
PAD_SOUTH = 0,
110+
PAD_EAST = 1,
111+
PAD_WEST = 2,
112+
PAD_NORTH = 3,
113+
114+
PAD_LB = 9,
115+
PAD_RB = 10,
116+
117+
PAD_LS = 7,
118+
PAD_RS = 8,
119+
120+
PAD_START = 6,
121+
PAD_BACK = 4,
122+
PAD_GUIDE = 5,
123+
124+
PAD_DPAD_UP = 11,
125+
PAD_DPAD_DOWN = 12,
126+
PAD_DPAD_LEFT = 13,
127+
PAD_DPAD_RIGHT = 14,
128+
129+
PAD_MISC1 = 15,
130+
PAD_MISC2 = 21,
131+
PAD_MISC3 = 22,
132+
PAD_MISC4 = 23,
133+
PAD_MISC5 = 24,
134+
PAD_MISC6 = 25,
135+
136+
PAD_PADDLE1 = 16,
137+
PAD_PADDLE2 = 17,
138+
PAD_PADDLE3 = 18,
139+
PAD_PADDLE4 = 19,
140+
141+
PAD_TOUCHPAD = 20,
142+
143+
PAD_BUTTON_COUNT = 26
144+
}
145+
146+
enum input_event {
147+
just_pressed,
148+
pressed
149+
}
150+
6151
class InputNode : Node {
7-
aliases: table<string, int>
8-
events : table<int, array<lambda>>
152+
aliases: table<string, KeyCode>
153+
just_pressed_events : table<KeyCode, array<lambda>>
154+
pressed_events : table<KeyCode, array<lambda>>
9155

10156
def InputNode() {
11157
Node`Node(self, "InputNode")
158+
aliases = table<string, KeyCode>()
159+
just_pressed_events = table<KeyCode, array<lambda>>()
160+
pressed_events = table<KeyCode, array<lambda>>()
12161
}
13162

14-
def add_alias(name: string, key: int) : void {
163+
def add_alias(name: string, key: KeyCode) : void {
15164
aliases.insert(name, key)
16165
}
17166

18-
def add_callback(alias: string, var callback: lambda) : bool {
167+
def add_callback(alias: string, input_type: input_event, var callback: lambda) : bool {
19168
if (!aliases.key_exists(alias)) {
20169
return false
21170
}
22171

23172
let aliased_key = aliases |> get_value(alias)
24-
add_callback_raw(aliased_key, callback)
173+
add_callback_raw(aliased_key, input_type, callback)
25174
return true
26175
}
27176

28-
def add_callback_raw(key: int, var callback: lambda) : void {
29-
if (!events.key_exists(key)) {
30-
events[key] <- array<lambda>()
177+
def add_callback_raw(key: KeyCode, input_type: input_event, var callback: lambda) : void {
178+
if (input_type == input_event.just_pressed) {
179+
if (!just_pressed_events.key_exists(key)) {
180+
just_pressed_events[key] <- array<lambda>()
181+
}
182+
just_pressed_events[key].emplace(callback)
183+
}
184+
elif (input_type == input_event.pressed) {
185+
if (!pressed_events.key_exists(key)) {
186+
pressed_events[key] <- array<lambda>()
187+
}
188+
pressed_events[key].emplace(callback)
31189
}
32-
events[key].emplace(callback)
33190
}
34191

192+
35193
def override update(dt: float) {
36-
for (key, callbacks in keys(events), values(events)) {
37-
if (key_just_pressed(key)) {
194+
super.update(dt)
195+
196+
for (key, callbacks in keys(just_pressed_events), values(just_pressed_events)) {
197+
if (key_just_pressed(int(key))) {
198+
for (cb in callbacks) {
199+
invoke(cb)
200+
}
201+
}
202+
}
203+
204+
for (key, callbacks in keys(pressed_events), values(pressed_events)) {
205+
if (key_pressed(int(key))) {
38206
for (cb in callbacks) {
39207
invoke(cb)
40208
}

test_game/scripts/main.das

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ var inpt = new InputNode()
1010

1111
[export]
1212
def on_start()
13-
inpt.add_alias("interact", 13)
13+
inpt.add_alias("interact", KeyCode.KEY_0)
1414

15-
inpt.add_callback("interact", @() : void {
16-
print("allah\n");
15+
inpt.add_callback("interact",input_event.pressed, @() : void {
16+
print("hey\n");
1717
})
1818

1919
let sound_info = sound_info_default()

0 commit comments

Comments
 (0)