#include "client/blit.h" #include "client/input.h" #include "client/video.h" #include "clock.h" #include "skele.h" #include #include static uint8_t running = 1; static void on_signal(void) { running = 0; } int main(int argc, char *argv[]) { skele_video_config_t video_cfg; uint64_t last, now, elapsed, accum = 0; uint8_t *pixels; skele_clock_init(on_signal); if (skele_stk_setup() != SKELE_INIT_SUCCESS) return 1; if (skele_init() != SKELE_INIT_SUCCESS) { skele_stk_teardown(); return 1; } video_cfg.render_width = SKELE_DEFAULT_RENDER_WIDTH; video_cfg.render_height = SKELE_DEFAULT_RENDER_HEIGHT; video_cfg.window_width = 0; video_cfg.window_height = 0; video_cfg.flags = 0; if (skele_video_init(video_cfg) != SKELE_INIT_SUCCESS) { skele_stk_teardown(); skele_shutdown(); return 1; } pixels = calloc(video_cfg.render_width * video_cfg.render_height, sizeof(uint8_t)); if (!pixels) { skele_video_shutdown(); skele_stk_teardown(); skele_shutdown(); return 1; } last = skele_time_ns(); while (running) { stk_poll(); if (!skele_input_poll()) break; now = skele_time_ns(); elapsed = now - last; accum += elapsed; last = now; while (accum >= skele_tick_ns) { skele_tick(); accum -= skele_tick_ns; } skele_video_blit(pixels); skele_video_present(); } free(pixels); skele_video_shutdown(); skele_stk_teardown(); skele_shutdown(); return 0; }