/* * Copyright (c) Camden Dixie O'Brien * SPDX-License-Identifier: AGPL-3.0-only */ #ifndef ENGINE_HOOKS_H #define ENGINE_HOOKS_H #include typedef struct { struct { const char *title; unsigned w, h; } win; size_t memsize; } engineconf_t; typedef enum { GAMESTATUS_OK, GAMESTATUS_QUIT, } gamestatus_t; typedef void game_init_t(void *mem, SDL_Renderer *renderer); typedef void game_teardown_t(void *mem); typedef gamestatus_t game_evt_t(void *mem, const SDL_Event *evt); typedef gamestatus_t game_update_t(void *mem, double dt); typedef void game_render_t(const void *mem, SDL_Renderer *renderer, long unsigned t); #define HOOKS_XLIST \ X(game_init) \ X(game_teardown) \ X(game_evt) \ X(game_update) \ X(game_render) #ifndef HOTRELOAD extern const engineconf_t game_conf; #define X(hook) hook##_t hook; HOOKS_XLIST #undef X #endif #endif