diff --git a/kubo_input.c b/kubo_input.c index 8821f5c..8f0f044 100644 --- a/kubo_input.c +++ b/kubo_input.c @@ -17,6 +17,7 @@ */ #include "kubo_input.h" +#include "states/kubo_states.h" extern bool kubo_mouse_snap; @@ -24,6 +25,7 @@ static void key_input(struct kubo_context *context, Camera2D *camera); static void char_input(struct kubo_context *context); static void handle_cmd_input(struct kubo_context *context); +static void handle_camera_input(int key_code, Camera2D *camera); void kubo_input_handle(struct kubo_context *context, Camera2D *camera) { char_input(context); @@ -38,6 +40,10 @@ void kubo_input_handle(struct kubo_context *context, Camera2D *camera) { static void key_input(struct kubo_context *context, Camera2D *camera) { int key_code = GetKeyPressed(); + if (context->state.id == KUBO_CONTEXT_NORMAL) { + handle_camera_input(key_code, camera); + } + switch (key_code) { case KEY_Q: case KEY_ESCAPE: @@ -52,38 +58,6 @@ static void key_input(struct kubo_context *context, Camera2D *camera) { kubo_context_set_state(context, KUBO_CONTEXT_WALL_SELECT); break; - case KEY_RIGHT: - case KEY_L: - if (context->state.id == KUBO_CONTEXT_NORMAL) { - kubo_camera_shift(camera, - (Vector2){.x = KUBO_INPUT_CAMERA_SHIFT, .y = 0}); - } - break; - - case KEY_UP: - case KEY_K: - if (context->state.id == KUBO_CONTEXT_NORMAL) { - kubo_camera_shift(camera, - (Vector2){.x = 0, .y = KUBO_INPUT_CAMERA_SHIFT}); - } - break; - - case KEY_LEFT: - case KEY_H: - if (context->state.id == KUBO_CONTEXT_NORMAL) { - kubo_camera_shift(camera, - (Vector2){.x = -KUBO_INPUT_CAMERA_SHIFT, .y = 0}); - } - break; - - case KEY_DOWN: - case KEY_J: - if (context->state.id == KUBO_CONTEXT_NORMAL) { - kubo_camera_shift(camera, - (Vector2){.x = 0, .y = -KUBO_INPUT_CAMERA_SHIFT}); - } - break; - case KEY_T: kubo_mouse_snap = !kubo_mouse_snap; break; @@ -133,3 +107,33 @@ static void handle_cmd_input(struct kubo_context *context) { return; } + +static void handle_camera_input(int key_code, Camera2D *camera) { + switch (key_code) { + case KEY_RIGHT: + case KEY_L: + kubo_camera_shift(camera, + (Vector2){.x = -KUBO_INPUT_CAMERA_SHIFT, .y = 0}); + break; + + case KEY_UP: + case KEY_K: + kubo_camera_shift(camera, + (Vector2){.x = 0, .y = KUBO_INPUT_CAMERA_SHIFT}); + break; + + case KEY_LEFT: + case KEY_H: + kubo_camera_shift(camera, + (Vector2){.x = KUBO_INPUT_CAMERA_SHIFT, .y = 0}); + break; + + case KEY_DOWN: + case KEY_J: + kubo_camera_shift(camera, + (Vector2){.x = 0, .y = -KUBO_INPUT_CAMERA_SHIFT}); + break; + default: + break; + } +} diff --git a/states/kubo_state_normal.c b/states/kubo_state_normal.c index c2ae857..7692c95 100644 --- a/states/kubo_state_normal.c +++ b/states/kubo_state_normal.c @@ -17,10 +17,3 @@ */ #include "kubo_state_normal.h" -#include "../kubo_context.h" - -void kubo_state_normal_entered(void *context_data) { - struct kubo_context *context = (struct kubo_context *)context_data; - (void)context; - printf("hello from state normal\n"); -} diff --git a/states/kubo_state_normal.h b/states/kubo_state_normal.h index 3c7b16b..c492ae4 100644 --- a/states/kubo_state_normal.h +++ b/states/kubo_state_normal.h @@ -23,10 +23,9 @@ #include "kubo_state_data.h" -void kubo_state_normal_entered(void *context_data); - static const struct kubo_state_data kubo_state_normal_data = { - .state_entered = kubo_state_normal_entered, + .state_entered = NULL, + .state_key = NULL }; #endif