diff --git a/kubo_context.c b/kubo_context.c index c45c666..439515c 100644 --- a/kubo_context.c +++ b/kubo_context.c @@ -111,6 +111,16 @@ struct kubo_wall *kubo_context_get_pending_wall(struct kubo_context *context) { return wall; } +void kubo_context_delete_wall(struct kubo_context *context) { + if (context->state.id != KUBO_CONTEXT_WALL_SELECT || + !context->walls.count) { + return; + } + + kubo_wall_arr_del(&context->walls, context->wall_select_index); + kubo_context_select_next_wall(context); +} + void kubo_context_select_next_wall(struct kubo_context *context) { if (context->state.id != KUBO_CONTEXT_WALL_SELECT || !context->walls.count) { diff --git a/kubo_context.h b/kubo_context.h index 27c095b..eaafbdf 100644 --- a/kubo_context.h +++ b/kubo_context.h @@ -71,6 +71,7 @@ void kubo_context_set_state(struct kubo_context *context, void kubo_context_accept_cmd(struct kubo_context *context); struct kubo_wall *kubo_context_get_pending_wall(struct kubo_context *context); +void kubo_context_delete_wall(struct kubo_context *context); void kubo_context_select_next_wall(struct kubo_context *context); void kubo_context_select_prev_wall(struct kubo_context *context); diff --git a/kubo_dynarray.h b/kubo_dynarray.h index 893c0b5..71f1d07 100644 --- a/kubo_dynarray.h +++ b/kubo_dynarray.h @@ -21,6 +21,7 @@ #include #include +#include #define KUBO_DRYNARRAY_DEFAULT_CAP 4 @@ -80,6 +81,12 @@ static inline void name##_clear(struct name *arr) { \ free(arr->data); \ name##_init(arr); \ + } \ + \ + static inline void name##_del(struct name *arr, size_t index) { \ + assert(index < arr->count); \ + memmove(arr->data + index, arr->data + index + 1, \ + (--arr->count - index) * sizeof(struct name)); \ } #endif diff --git a/kubo_input.c b/kubo_input.c index 2f78f0a..1b6b413 100644 --- a/kubo_input.c +++ b/kubo_input.c @@ -64,6 +64,9 @@ static void key_input(struct kubo_context *context) { kubo_context_select_prev_wall(context); break; + case KEY_X: + kubo_context_delete_wall(context); + default: break; } diff --git a/kubo_window.c b/kubo_window.c index e7d0e06..25b2f60 100644 --- a/kubo_window.c +++ b/kubo_window.c @@ -30,6 +30,7 @@ void kubo_window_init() { InitWindow(KUBO_WINDOW_WIDTH, KUBO_WINDOW_HEIGHT, "Kubo"); EnableEventWaiting(); SetExitKey(0); + SetTargetFPS(60); } void kubo_window_cleanup() { CloseWindow(); }