#include "game.h" #include #include #include #include static uint8_t running = 1; static void on_signal(void) { running = 0; } int main(int argc, char *argv[]) { uint64_t tick_start; uint64_t elapsed; uint64_t last_print = 0; (void)argc; (void)argv; 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; } if (!game_init()) { skele_stk_teardown(); skele_shutdown(); return 1; } while (running) { tick_start = skele_time_ns(); skele_clock_tick_begin(); stk_poll(); game_tick(); skele_clock_tick_end(); if (tick_start - last_print >= 1000000000ULL) { stk_log(STK_LOG_INFO, "tps=%.1f tick=%lluns/%lluns/%lluns", skele_tps, (unsigned long long)skele_tick_work_time_ns, (unsigned long long)skele_tick_total_time_ns, (unsigned long long)skele_tick_ns); last_print = tick_start; } elapsed = skele_time_ns() - tick_start; skele_clock_idle_begin(); if (elapsed < skele_tick_ns) skele_sleep_ns(skele_tick_ns - elapsed); skele_clock_idle_end(); } game_shutdown(); skele_stk_teardown(); skele_shutdown(); return 0; }