summaryrefslogtreecommitdiff
path: root/src/main.c
blob: a64fb0d68f61754815da02ca2e38ec5e0ea071a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stddef.h>
#include <stdlib.h>

#include "level.h"
#include "raylib.h"

int main() {
  SetConfigFlags(FLAG_WINDOW_RESIZABLE);
  InitWindow(800, 600, "sillyeditor");
  SetTargetFPS(60);

  int gridSize = 32;

  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()) {
    // Change the grid size
    if (GetMouseWheelMove() != 0.0) {
      gridSize += (int)(GetMouseWheelMove() * 4.0);
    }

    BeginDrawing();
    ClearBackground(RAYWHITE);
    DrawText("hi world!", GetScreenWidth() / 2 - 16 * 4,
             GetScreenHeight() / 2 - 16, 32, BLACK);

    SE_RenderLevel(level, gridSize);

    // Drawing grid
    for (int x = 0; x <= level->width; x++) {
      DrawLine(x * gridSize, 0, x * gridSize, GetScreenHeight(), LIGHTGRAY);
    }

    for (int y = 0; y <= level->height; y++) {
      DrawLine(0, y * gridSize, GetScreenWidth(), y * gridSize, LIGHTGRAY);
    }

    // Drawing points
    for (int x = 0; x < level->width; x++) {
      for (int y = 0; y < level->height; y++) {
        Color color = GRAY;

        for (int i = 0; i < level->height * level->width; i++) {
          Side *side = level->sides[i];
          if (side == NULL) continue;

          if ((x == side->a.x && y == side->a.y) ||
              (x == side->b.x && y == side->b.y)) {
            color = RED;
            break;
          }
        }

        DrawCircle(x * gridSize, y * gridSize, 4, color);
      }
    }

    EndDrawing();
  }

  SE_FreeLevel(level);

  return 0;
}