48 lines
876 B
C
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
|