#include "game.h" #include "input.h" #include "renderer.h" #include "rng.h" #include #include #define MAX(a, b) ((a) < (b) ? (b) : (a)) static bool run; static void quit() { run = false; } int main() { const int input_fd = input_init(); const renderer_params_t renderer_params = renderer_init(); rng_init(); game_init(renderer_params.aspect); input_on_quit(quit); renderer_clear(); renderer_swap(); const int drm_fd = renderer_params.drm_fd; const int max_fd = MAX(input_fd, drm_fd); fd_set set; run = true; while (run) { FD_ZERO(&set); FD_SET(input_fd, &set); FD_SET(drm_fd, &set); select(max_fd + 1, &set, nullptr, nullptr, nullptr); if (FD_ISSET(input_fd, &set)) input_handle(); if (FD_ISSET(drm_fd, &set)) { renderer_handle(); game_update(); game_draw(); renderer_swap(); } } renderer_cleanup(); input_cleanup(); return 0; }