summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-20 23:56:35 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2023-12-20 23:56:35 +0700
commit8dd06cebfd4448679210ff732869499ac1f06145 (patch)
tree7d91094c78db3e69ed6b201ebc040465393376b1
parentc91f0c68aa03451607bca6f9bbaa8fb4503b1494 (diff)
lines and lines
-rw-r--r--src/main.c81
1 files changed, 71 insertions, 10 deletions
diff --git a/src/main.c b/src/main.c
index eaf6d3d..1d5fc9e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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