From d740ead06e758a637908de709d0114840890f9f3 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 18 Jan 2025 02:36:11 +0500 Subject: feat: side and point structs --- src/level.c | 30 ++++++++++++------------------ src/level.h | 13 ++++++++++--- src/main.c | 10 +++++++++- 3 files changed, 31 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/level.c b/src/level.c index c805c04..cda6594 100644 --- a/src/level.c +++ b/src/level.c @@ -1,5 +1,6 @@ #include "level.h" +#include #include #include "raylib.h" @@ -7,17 +8,8 @@ Level *SE_CreateLevel(int width, int height) { Level *level = malloc(sizeof(Level) + sizeof(Vector3) * width * height); - int i = 0; - - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - Vector3 *v = malloc(sizeof(Vector3)); - v->x = x * 10; - v->y = y * 10; - v->z = 0; - level->vectors[i] = v; - i++; - } + for (int i = 0; i < width * height; i++) { + level->sides[i] = NULL; } level->width = width; @@ -26,19 +18,21 @@ Level *SE_CreateLevel(int width, int height) { return level; } -void SE_RenderLevel(Level *level) { - int cell_size = 10; - +void SE_RenderLevel(Level *level, int zoomScale) { for (int i = 0; i < level->width * level->height; i++) { - Vector3 *vector = level->vectors[i]; - DrawRectangle(vector->x, vector->y, 2, 2, BLACK); + Side *side = level->sides[i]; + if (side == NULL) continue; + + DrawLine(side->a.x * zoomScale, side->a.y * zoomScale, + side->b.x * zoomScale, side->b.y * zoomScale, RED); } } void SE_FreeLevel(Level *level) { for (int i = 0; i < level->width * level->height; i++) { - Vector3 *v = level->vectors[i]; - free(v); + Side *side = level->sides[i]; + if (side == NULL) continue; + free(side); } free(level); } diff --git a/src/level.h b/src/level.h index fe8f62f..fe6ce1d 100644 --- a/src/level.h +++ b/src/level.h @@ -1,9 +1,16 @@ -#include "raylib.h" +typedef struct { + int x, y; +} Point; + +typedef struct { + Point a, b; +} Side; + typedef struct { int width, height; - Vector3 *vectors[]; + Side *sides[]; } Level; Level *SE_CreateLevel(int width, int height); -void SE_RenderLevel(Level *level); +void SE_RenderLevel(Level *level, int zoomScale); void SE_FreeLevel(Level *level); diff --git a/src/main.c b/src/main.c index ca3a4ad..9b79dcf 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,5 @@ +#include + #include "level.h" #include "raylib.h" @@ -10,13 +12,19 @@ int main() { Level *level = SE_CreateLevel(30, 30); + // creating a dummy side + Side *side = malloc(sizeof(Side)); + side->a = (Point){1, 1}; + side->b = (Point){3, 4}; + level->sides[0] = side; + while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(RAYWHITE); DrawText("hi world!", GetScreenWidth() / 2 - 16 * 4, GetScreenHeight() / 2 - 16, 32, BLACK); - SE_RenderLevel(level); + SE_RenderLevel(level, gridSize); // Drawing grid for (int x = 0; x <= level->width; x++) { -- cgit v1.2.3