retro-rpg/engine/include/engine_hooks.h

48 lines
876 B
C

/*
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: AGPL-3.0-only
*/
#ifndef ENGINE_HOOKS_H
#define ENGINE_HOOKS_H
#include <SDL2/SDL.h>
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