aboutsummaryrefslogtreecommitdiff
path: root/dc/dc.c
blob: 0d69710b6f14576c0a1ac07cc901abbedc20c9c7 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>

#include <teensy.h>
#include <math.h>
#include <time.h>

#define QOI_IMPLEMENTATION
#include "third/qoi.h"

#define SCREEN_WIDTH 256
#define SCREEN_HEIGHT 256

#define TILE_SIZE 16

struct ty_image img;

void tick(void)
{
    double start = ty_get_time();

    ty_draw_clear(TY_COLOR_BLACK);

    for (int y = 0; y < SCREEN_HEIGHT; y += 16) {
        for (int x = 0; x < SCREEN_WIDTH; x += 16) {
            ty_draw_image(img, ty_vec2i(x, y));
        }
    }

    ty_draw_rect(
        (struct ty_recti){
            SCREEN_WIDTH*0.5 + sin(ty_get_time() * 10) * 50 - 25,
            SCREEN_HEIGHT*0.5-25,
            50, 50,
        },
        TY_COLOR_RED
    );

    ty_draw_line(
        ty_vec2i(0, 0),
        ty_vec2i(100, 100),
        ty_color(0xFF, 0xF0, 0x80)
    );

    ty_draw_line(
        ty_vec2i(100, 0),
        ty_vec2i(0, 100),
        ty_color(0x80, 0xF0, 0xFF)
    );

    ty_draw_line(
        ty_vec2i(150, 0),
        ty_vec2i(150, 100),
        ty_color(0x80, 0xF0, 0xFF)
    );

    ty_draw_line(
        ty_vec2i(100, 50),
        ty_vec2i(200, 50),
        ty_color(0xFF, 0xF0, 0x80)
    );

    ty_draw_end();

    double frame_time = ty_get_time() - start;
    ty_log_debug("%g ms, %g FPS", frame_time * 1000, 1.0 / frame_time);
}

int main(void)
{
    struct ty_hints hints = {
        .scr_width = SCREEN_WIDTH,
        .scr_height = SCREEN_HEIGHT,
        .game_title = "Demonchime",
        .ticrate = 30,
    };
    ty_init(hints);

    qoi_desc desc;
    void *data = qoi_read("test_img.qoi", &desc, 3);
    if (!data)
        ty_log_fatal(TY_ERR_IO, "failed to read image");
    img = ty_create_image(desc.width, desc.height, data);
    free(data);

    while (ty_is_game_running()) {
        int ticks = ty_tick();
        for (int i = 0; i < ticks; i++)
            tick();
        // ty_sleep(1000 / hints.ticrate);
    }

    ty_free_image(img);

    ty_deinit();
    return 0;
}