diff --git a/resources/CozetteVector.ttf b/resources/CozetteVector.ttf new file mode 100644 index 0000000..7b7280c Binary files /dev/null and b/resources/CozetteVector.ttf differ diff --git a/resources/cozette.fnt b/resources/cozette.fnt new file mode 100644 index 0000000..1a30de5 Binary files /dev/null and b/resources/cozette.fnt differ diff --git a/src/main.c b/src/main.c index 052ad26..5249336 100644 --- a/src/main.c +++ b/src/main.c @@ -11,6 +11,8 @@ char timer_string[50]; int remote_state = 0; +Font font; + //testing control function void control(void) { static int last_state; @@ -21,8 +23,6 @@ void control(void) { last_state = remote_state; } - - int main(int argc, char *argv[]) { InitWindow(420, 640, "Ghost"); SetTargetFPS(60); @@ -34,6 +34,9 @@ int main(int argc, char *argv[]) { //set_control_func(control); //set_pid(17329); + font = LoadFontEx("/usr/share/fonts/CozetteVector.ttf", 400, 0, NULL); + printf("%s\n", "yes"); + while (!WindowShouldClose()) { ghtimer_tick(&timer); ghtimer_timestring(&timer, timer_string); @@ -46,12 +49,9 @@ int main(int argc, char *argv[]) { BeginDrawing(); ClearBackground(RAYWHITE); - DrawText(timer_string , 200, 550, 100, BLACK); + DrawTextEx(font, timer_string , (Vector2){200.0f, 550.0f}, (float)font.baseSize / 4, 2, BLACK); - for (int i = 0; i < segments.cnt; i++) { - DrawText(segments.list[i]->name, 10, 30 * i, 30, BLACK); - //DrawText(segments.list[i]->realtime, 50, 30 * i, 30, BLACK); - } + render_splits(&segments); EndDrawing(); } } diff --git a/src/splits.c b/src/splits.c index 5b4e37e..5cda475 100644 --- a/src/splits.c +++ b/src/splits.c @@ -2,6 +2,9 @@ #include "parser.h" #include "timer.h" +#include +extern Font font; + void print_segment(segment *seg) { printf("%s\n", seg->name); //printf("%ld.%ld\n", seg->realtime.tv_sec, seg->realtime.tv_nsec); @@ -26,6 +29,21 @@ struct timespec parse_time(char *str) { return time; } +char *time_unparse(char *buffer, size_t len, struct timespec *ts) { + struct tm *t = gmtime(&ts->tv_sec); + if (t->tm_hour == 0) { + strftime(buffer, len, "%M:%S.", gmtime(&ts->tv_sec)); + } else if (t->tm_min == 0) { + strftime(buffer, len, "%S.", gmtime(&ts->tv_sec)); + } else { + strftime(buffer, len, "%T.", gmtime(&ts->tv_sec)); + } + + snprintf(&buffer[strlen(buffer)], len, "%.02ld", ts->tv_nsec / 10000000); + + return buffer; +} + segment *read_segment(char *file, char *line) { segment *seg = calloc(1, sizeof(segment)); @@ -107,5 +125,16 @@ segment_list open_splits_file(const char *path) { return segments; } +void render_splits(segment_list *segments) { + char buffer[100]; + + for (int i = 0; i < segments->cnt; i++) { + + + DrawTextEx(font, segments->list[i]->name, (Vector2){10, 30 * i}, (float)font.baseSize/16, 2, BLACK); + DrawTextEx(font, time_unparse(buffer, 100, &segments->list[i]->realtime), (Vector2){200, 30 * i}, (float)font.baseSize/16, 2, BLACK); + } +} + //probably need a thing to free all the segments diff --git a/src/splits.h b/src/splits.h index 54e5270..590c672 100644 --- a/src/splits.h +++ b/src/splits.h @@ -20,5 +20,6 @@ typedef struct segment_list { } segment_list; segment_list open_splits_file(const char *path); +void render_splits(segment_list *segments); #endif diff --git a/test/splits.ghs b/test/splits.ghs index cdca1fc..2b8af72 100644 --- a/test/splits.ghs +++ b/test/splits.ghs @@ -3,20 +3,20 @@ game: The Game segment name: Segment 1 gametime: 00:01:00.50 - realtime: 00:02:00.00 + realtime: 00:00:42.81 best: 00:01:00.00 end segment name: Segment 2 gametime: 00:02:00.57 - realtime: 00:04:00.00 + realtime: 00:04:00.42 best: 00:01:00.00 end segment name: Segment 3 gametime: 00:03:00.50 - realtime: 00:06:00.00 + realtime: 06:06:00.00 best: 00:01:00.00 end