diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2023-07-28 14:27:12 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2023-07-28 14:27:12 +0000 |
| commit | 5ee7f4b4b033de403f1861eedc942c7a5a0f31b6 (patch) | |
| tree | ec27fbe62ab815d79d9e75735789e5543a4870cb /src | |
| parent | dbea7051aded87a5de8466124154569ff4e4be9b (diff) | |
test
Diffstat (limited to 'src')
| -rw-r--r-- | src/state.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/state.c b/src/state.c index 59729a5..853037f 100644 --- a/src/state.c +++ b/src/state.c @@ -1,9 +1,7 @@ #include <engine/state.h> #include <engine/logging.h> -#include <states/all_states.h> - -typedef StateType state_update_t (void*); +typedef StateType state_update_t(void*); const char *StateTypeStr[] = { "null", @@ -13,6 +11,34 @@ const char *StateTypeStr[] = { "quit", }; +// Setup API for states +#define State(name) \ +typedef struct name##_state name##_state; \ +typedef void (state_##name##_init_t)(name##_state*); \ +typedef void (state_##name##_free_t)(name##_state*); \ +typedef StateType (state_##name##_update_t)(name##_state*); +#include <states/all_states.h> +#undef State + +#ifdef DAW_BUILD_HOTRELOAD +// When hotreloading is enabled, we want to assign state function pointers +// dynamically. +#define State(name) \ +state_##name##_init_t *name##_init = NULL; \ +state_##name##_free_t *name##_free = NULL; \ +state_##name##_update_t *name##_update = NULL; + +#else +// Otherwise we just declare them. +#define State(name) \ +state_##name##_init_t name##_init; \ +state_##name##_free_t name##_free; \ +state_##name##_update_t name##_update; +#endif + +#include <states/all_states.h> +#undef State + void State_init(StateType type, memory *mem) { switch (type) { #define State(name) \ |
