#include "kubo_window.h" void kubo_window_init(struct kubo_context *context) { InitWindow(KUBO_WINDOW_WIDTH, KUBO_WINDOW_HEIGHT, "Kubo"); } void kubo_window_cleanup(struct kubo_context *context) { CloseWindow(); } bool kubo_window_should_close(struct kubo_context *context) { return context->exit_pending || WindowShouldClose(); } void kubo_window_tick(struct kubo_context *context) { kubo_window_render(context); kubo_window_input(context); } Vector2 start; Vector2 end; int state; void kubo_window_render(struct kubo_context *context) { BeginDrawing(); ClearBackground(WHITE); if (state == 1) { Vector2 mouse_pos = GetMousePosition(); Vector2 points[] = {start, mouse_pos}; DrawSplineLinear(points, 2, 10.f, BLACK); } else if (state == 2) { Vector2 mouse_pos = GetMousePosition(); Vector2 points[] = {start, end}; DrawSplineLinear(points, 2, 10.f, BLACK); } for (int i = 0; i < context->num_walls; i++) { if (context->walls[i]->wall_state == KUBO_WALL_STARTED) { Vector2 mouse_pos = GetMousePosition(); Vector2 points[] = {context->walls[i]->vertices[0], mouse_pos}; DrawSplineLinear(points, 2, 10.f, BLACK); } else if (context->walls[i]->wall_state == KUBO_WALL_DONE) { DrawSplineLinear(context->walls[i]->vertices, context->walls[i]->num_vertices, 10.f, BLACK); } } EndDrawing(); } void kubo_window_input(struct kubo_context *context) { if (IsKeyPressed(KEY_Q)) { printf("q\n"); context->exit_pending = true; } if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { struct kubo_wall *current_wall = kubo_context_get_pending_wall(context); if (current_wall->wall_state == KUBO_WALL_INIT) { printf("new wall\n"); Vector2 start_pos = GetMousePosition(); kubo_wall_append(current_wall, start_pos); current_wall->wall_state = KUBO_WALL_STARTED; } else if (current_wall->wall_state == KUBO_WALL_STARTED) { printf("started wall\n"); Vector2 end_pos = GetMousePosition(); kubo_wall_append(current_wall, end_pos); current_wall->wall_state = KUBO_WALL_DONE; } else { printf("neither?\n"); } } }