#include #include #include #include #define QOI_IMPLEMENTATION #include "third/qoi.h" #define SCREEN_WIDTH 256 #define SCREEN_HEIGHT 256 #define TILE_SIZE 16 int main(void) { struct ty_creation_hints hints = { .win_width = SCREEN_WIDTH, .win_height = SCREEN_HEIGHT, .win_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"); struct ty_image img = ty_create_image(desc.width, desc.height, data); free(data); while (ty_is_game_running()) { ty_draw_clear(TY_COLOR_BLACK); ty_draw_image_ex( img, (struct ty_recti){ 0, 0, img.width, img.height, }, (struct ty_recti){ 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, } ); 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(); ty_tick(); ty_sleep(1000 / hints.ticrate); } ty_free_image(img); ty_deinit(); return 0; }