From c35cda4f9b8b6a17ed92c89a58de387310b9c267 Mon Sep 17 00:00:00 2001 From: sandyx Date: Thu, 10 Oct 2024 06:50:09 -0500 Subject: [PATCH] current split bar --- src/controller.c | 18 +++++++++++++++--- src/layout_mgr.h | 21 +++++++++++++++++++++ src/main.c | 11 ++++++++--- src/segment_renderer.c | 4 +++- src/timer_renderer.h | 2 +- 5 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 src/layout_mgr.h diff --git a/src/controller.c b/src/controller.c index cce9b18..8733191 100644 --- a/src/controller.c +++ b/src/controller.c @@ -11,18 +11,30 @@ void ctrl_pause(GHTimer *timer) { } void ctrl_start(ctrl_binder *cb) { - if (cb->timer_rta->running) { if (cb->rec_sl != NULL) { - cb->live_sl->list[cb->current_segment]->realtime = ghtimer_time(cb->timer_rta); + if (cb->current_segment < cb->live_sl->cnt) { + cb->live_sl->list[cb->current_segment]->realtime = ghtimer_time(cb->timer_rta); + //need to add a condition for igt + } else { + goto STOP; + } + cb->current_segment++; cb->sr->current = cb->current_segment; } else { +STOP: + //increment run count + //ask user to save splits? + cb->current_segment = 0; + cb->sr->running = false; + cb->sr->current = cb->current_segment; ghtimer_stop(cb->timer_rta); //stop or reset, save splits } //pause timer if last split - if (false) { + if (cb->current_segment == cb->live_sl->cnt) { + cb->sr->running = false; ghtimer_pause(cb->timer_rta); return; } diff --git a/src/layout_mgr.h b/src/layout_mgr.h new file mode 100644 index 0000000..a282f7e --- /dev/null +++ b/src/layout_mgr.h @@ -0,0 +1,21 @@ +#ifndef LAYOUT_MGR_H +#define LAYOUT_MGR_H + +#include +#include +#include + +extern int windowWidth; +extern int windowHeight; + +typedef struct layout_background { + Texture2D texture; + Shader shader; +} layout_background; + +layout_background *layout_background_new(Color color) { + Image blank = GenImageColor(windowWidth, windowHeight, BLANK); + Texture2D texture = LoadTextureFromImage(blank); + UnloadImage(blank); +} +#endif diff --git a/src/main.c b/src/main.c index 55e796a..c4a353c 100644 --- a/src/main.c +++ b/src/main.c @@ -36,12 +36,15 @@ int main(int argc, char *argv[]) { InitWindow(windowWidth, windowHeight, "Ghost"); SetTargetFPS(60); + //use libxml or something segment_list segments = open_splits_file("test/splits.ghs"); GHTimer *timer = ghtimer_new(); + //make a layout manager for these timer_renderer *tr = create_timer_renderer(timer, (Vector2){0.0f, 90.0f}, (Vector2){(float)windowWidth, (float)windowHeight/8}); segment_renderer *sr = create_segment_renderer(&segments, 0.0f, 0.0f); + //layout manager Image blank = GenImageColor(windowWidth, windowHeight, BLANK); Texture2D texture = LoadTextureFromImage(blank); Shader shader = LoadShader(0, "shaders/frag.glsl"); @@ -68,13 +71,15 @@ int main(int argc, char *argv[]) { BeginDrawing(); //BeginShaderMode(shader); - ClearBackground(RAYWHITE); + ClearBackground(BLACK); //DrawTexture(texture, 0, 0, WHITE); //EndShaderMode(); - render_timer(tr); + + //need to make this not weird render_segments(sr); + render_timer(tr); EndShaderMode(); - EndDrawing(); + EndDrawing(); } ghtimer_delete(timer); diff --git a/src/segment_renderer.c b/src/segment_renderer.c index e215058..60770a1 100644 --- a/src/segment_renderer.c +++ b/src/segment_renderer.c @@ -33,6 +33,8 @@ void render_segments(segment_renderer *sr) { BeginShaderMode(*sr->shader); } + //need to not draw it if its the last split + //or if the timer isnt running if (sr->running) { DrawRectangle(0, (sr->current) * 30, windowWidth, (float)font.baseSize/16, BLUE); } @@ -46,6 +48,6 @@ void render_segments(segment_renderer *sr) { for (int i = 0; i < sr->count; i++) { DrawTextEx(font, sr->seglist->list[i]->name, (Vector2){10, 30 * i}, (float)font.baseSize/16, 2, BLACK); - DrawTextEx(font, time_unparse(sr->strfmt, FMT_SIZE, &sr->seglist->list[i]->realtime), (Vector2){200, 30 * i}, (float)font.baseSize/16, 2, BLACK); + DrawTextEx(font, time_unparse(sr->strfmt, FMT_SIZE, &sr->seglist->list[i]->realtime), (Vector2){200, 30 * i}, (float)font.baseSize/16, 2, BLACK); } } diff --git a/src/timer_renderer.h b/src/timer_renderer.h index f0ed55b..7180e1b 100644 --- a/src/timer_renderer.h +++ b/src/timer_renderer.h @@ -17,7 +17,7 @@ extern char *time_unparse(char *buffer, size_t len, struct timespec *ts); typedef struct timer_renderer { GHTimer *timer; - //Font font; + Font font; Vector2 pos; Vector2 size; bool running;