From 576bd27e11ec70bdbd1b9a644d2e227b57586337 Mon Sep 17 00:00:00 2001 From: iamcheeseman Date: Sun, 10 May 2026 00:28:14 -0400 Subject: i ain't splitting alla this up --- teensy/teensy_context.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 teensy/teensy_context.c (limited to 'teensy/teensy_context.c') diff --git a/teensy/teensy_context.c b/teensy/teensy_context.c new file mode 100644 index 0000000..4a812dd --- /dev/null +++ b/teensy/teensy_context.c @@ -0,0 +1,74 @@ +#include "teensy_context.h" +#include "teensy_renderer.h" + +#include +#include + +#include "teensy_platform.h" + +struct ty_ctx ctx; +extern struct ty_renderer r; + +bool is_init(void) +{ + int scr_size = ctx.hints.scr_width * ctx.hints.scr_height; + return scr_size > 0; +} + +void ty_init(struct ty_hints hints) +{ + ty_init_mem(); + + ctx.hints = hints; + ctx.ticrate = 1.0 / hints.ticrate; + ctx.prev_tic_ts = 0; + + ty_platform_init(&ctx); + ty_init_renderer(); +} + +void ty_deinit(void) +{ + assert(is_init()); + ty_platform_deinit(); + ty_deinit_renderer(); + ty_deinit_mem(); +} + +bool ty_is_game_running(void) +{ + assert(is_init()); + return !ty_platform_os_wants_quit(); +} + +double ty_get_time(void) +{ + assert(is_init()); + return ty_platform_get_time(); +} + +int ty_tick(void) +{ + assert(is_init()); + + double current_time = ty_get_time(); + double time_since_tic = current_time - ctx.prev_tic_ts; + + int tics = time_since_tic / ctx.ticrate; + if (tics > 0) { + ctx.prev_tic_ts = current_time; + ty_platform_frame(r.screen); + } + return tics; +} + +// TODO: Find a better place for this +void ty_sleep(uint64_t ms) +{ + assert(is_init()); + + struct timespec ts; + ts.tv_sec = ms / 1000; + ts.tv_nsec = (ms % 1000) * 1000000; + nanosleep(&ts, NULL); +} -- cgit v1.3-2-g0d8e