diff options
author | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2023-12-20 23:56:35 +0700 |
---|---|---|
committer | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2023-12-20 23:56:35 +0700 |
commit | 8dd06cebfd4448679210ff732869499ac1f06145 (patch) | |
tree | 7d91094c78db3e69ed6b201ebc040465393376b1 | |
parent | c91f0c68aa03451607bca6f9bbaa8fb4503b1494 (diff) |
lines and lines
-rw-r--r-- | src/main.c | 81 |
1 files changed, 71 insertions, 10 deletions
@@ -1,35 +1,64 @@ +#include <stdlib.h> +#include <stdio.h> + #include "raylib.h" -typedef struct InitConfig { +typedef struct Config { int SCREEN_WIDTH; int SCREEN_HEIGHT; int ORIGIN_X; int ORIGIN_Y; char TITLE[20]; int TARGET_FPS; -} InitConfig; +} Config; + +typedef struct Line { + Vector2 start; + Vector2 end; + Color color; +} Line; + +typedef struct VectorField { + int colSize; + int rowSize; + int spacing; + Line **lines; // col then row +} VectorField; -void doInitialization(InitConfig config); -void doDrawing(); +void Initialize(Config config); +void InitializeVectorField(VectorField *vectorField, int colSize, int rowSize); +void doDrawing(VectorField *vectorField, int colSize, int rowSize); void doUpdate(); int main(void) { - InitConfig config = { + Config config = { 1500, 900, 1500 / 2, 900 / 2, - "Cool shit", + "Cool Thing", 60 }; - doInitialization(config); + Initialize(config); + + int spacing = 20; + int colSize = config.SCREEN_WIDTH / spacing - 1; + int rowSize = config.SCREEN_HEIGHT / spacing - 1; + Line **lines = NULL; + VectorField vectorField = { + .colSize = colSize, + .rowSize = rowSize, + .spacing = spacing, + .lines = lines + }; + InitializeVectorField(&vectorField, colSize, rowSize); while (!WindowShouldClose()) { doUpdate(); - doDrawing(); + doDrawing(&vectorField, colSize, rowSize); } CloseWindow(); @@ -37,19 +66,51 @@ int main(void) return 0; } -void doInitialization(InitConfig config) { +void Initialize(Config config) { InitWindow(config.SCREEN_WIDTH, config.SCREEN_HEIGHT, config.TITLE); SetTargetFPS(config.TARGET_FPS); } +void MemAllocFailed(char *source) { + printf("Memory allocation for %s failed", source); + exit(42); +} + +void InitializeVectorField(VectorField *vectorField, int colSize, int rowSize) { + vectorField->lines = malloc(rowSize * sizeof(Line*)); + for (int i = 0; i < rowSize; i++) { + vectorField->lines[i] = malloc(colSize * sizeof(Line)); + for (int j = 0; j < colSize; j++) { + Line line = { + .start = { + (float)((j + 1) * vectorField->spacing), + (float)((i + 1) * vectorField->spacing) + }, + .end = { + (float)((j + 1) * vectorField->spacing + 10), + (float)((i + 1) * vectorField->spacing - 10) + }, + .color = WHITE + }; + vectorField->lines[i][j] = line; + } + } +} + void doUpdate() { float dt = GetFrameTime(); } -void doDrawing() { +void doDrawing(VectorField *vectorField, int colSize, int rowSize) { BeginDrawing(); ClearBackground(BLACK); + for (int i = 0; i < rowSize; i++) { + for (int j = 0; j < colSize; j++) { + DrawLineV(vectorField->lines[i][j].start, vectorField->lines[i][j].end, vectorField->lines[i][j].color); + } + } + EndDrawing(); }
\ No newline at end of file |