#include "game.h" #include #include #include #include #include #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, last_print = 0; 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.max_fps = 0; video_cfg.flags = SKELE_VIDEO_VSYNC; if (skele_video_init(video_cfg) != SKELE_INIT_SUCCESS) { skele_stk_teardown(); skele_shutdown(); return 1; } skele_video_set_title("game"); if (!game_init()) { skele_video_shutdown(); skele_stk_teardown(); skele_shutdown(); return 1; } last = skele_time_ns(); while (running) { if (!skele_input_poll()) break; stk_poll(); now = skele_time_ns(); elapsed = now - last; accum += elapsed; last = now; while (accum >= skele_tick_ns) { skele_tick(); accum -= skele_tick_ns; } skele_video_present(); if (now - last_print >= 1000000000ULL) { stk_log(STK_LOG_INFO, "fps=%.1f frame=%.2fms/%.2fms tps=%.1f tick=%lluns/%lluns idle=%lluns", skele_fps, skele_frame_time_ms, skele_frame_budget_ms, skele_tps, (unsigned long long)skele_tick_time_ns, (unsigned long long)skele_tick_ns, (unsigned long long)skele_tick_idle_ns); last_print = now; } } game_shutdown(); skele_video_shutdown(); skele_stk_teardown(); skele_shutdown(); return 0; }