aboutsummaryrefslogtreecommitdiff
path: root/plugins/movement/movement.c
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-06-09 18:26:52 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-06-09 18:26:52 +0200
commit02de1c17961b9a67bd6b75d5991408067041ffe9 (patch)
treeaab355108c74406eb914024587c160f861649247 /plugins/movement/movement.c
parentb956b3dea0cbc513221a5d640f24793783269411 (diff)
downloaddungeon_game-02de1c17961b9a67bd6b75d5991408067041ffe9.tar.xz
Modularize input
Diffstat (limited to 'plugins/movement/movement.c')
-rw-r--r--plugins/movement/movement.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/plugins/movement/movement.c b/plugins/movement/movement.c
new file mode 100644
index 0000000..494c8b0
--- /dev/null
+++ b/plugins/movement/movement.c
@@ -0,0 +1,44 @@
+#include "../game/game.h"
+
+static void move_up()
+{
+ move(&player, 0, -1);
+}
+
+static void move_left()
+{
+ move(&player, -1, 0);
+}
+
+static void move_down()
+{
+ move(&player, 0, 1);
+}
+
+static void move_right()
+{
+ move(&player, 1, 0);
+}
+
+__attribute__((constructor)) static void init()
+{
+ register_input_handler('w', (struct input_handler) {
+ .run_if_dead = false,
+ .callback = &move_up,
+ });
+
+ register_input_handler('a', (struct input_handler) {
+ .run_if_dead = false,
+ .callback = &move_left,
+ });
+
+ register_input_handler('s', (struct input_handler) {
+ .run_if_dead = false,
+ .callback = &move_down,
+ });
+
+ register_input_handler('d', (struct input_handler) {
+ .run_if_dead = false,
+ .callback = &move_right,
+ });
+}