context normal state and camera input

This commit is contained in:
Luka Jankovic 2025-09-06 18:00:34 +02:00
parent 7e065745d2
commit 737ba58860
3 changed files with 38 additions and 42 deletions

View file

@ -17,6 +17,7 @@
*/ */
#include "kubo_input.h" #include "kubo_input.h"
#include "states/kubo_states.h"
extern bool kubo_mouse_snap; 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 char_input(struct kubo_context *context);
static void handle_cmd_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) { void kubo_input_handle(struct kubo_context *context, Camera2D *camera) {
char_input(context); 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) { static void key_input(struct kubo_context *context, Camera2D *camera) {
int key_code = GetKeyPressed(); int key_code = GetKeyPressed();
if (context->state.id == KUBO_CONTEXT_NORMAL) {
handle_camera_input(key_code, camera);
}
switch (key_code) { switch (key_code) {
case KEY_Q: case KEY_Q:
case KEY_ESCAPE: 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); kubo_context_set_state(context, KUBO_CONTEXT_WALL_SELECT);
break; 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: case KEY_T:
kubo_mouse_snap = !kubo_mouse_snap; kubo_mouse_snap = !kubo_mouse_snap;
break; break;
@ -133,3 +107,33 @@ static void handle_cmd_input(struct kubo_context *context) {
return; 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;
}
}

View file

@ -17,10 +17,3 @@
*/ */
#include "kubo_state_normal.h" #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");
}

View file

@ -23,10 +23,9 @@
#include "kubo_state_data.h" #include "kubo_state_data.h"
void kubo_state_normal_entered(void *context_data);
static const struct kubo_state_data kubo_state_normal_data = { static const struct kubo_state_data kubo_state_normal_data = {
.state_entered = kubo_state_normal_entered, .state_entered = NULL,
.state_key = NULL
}; };
#endif #endif