time formatting

main
sandyx 1 year ago
parent 83a92f8675
commit 5b19367bdd

Binary file not shown.

Binary file not shown.

@ -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();
}
}

@ -2,6 +2,9 @@
#include "parser.h"
#include "timer.h"
#include <raylib.h>
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

@ -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

@ -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

Loading…
Cancel
Save