2024-07-29 22:20:30 +00:00
|
|
|
#include "townengine/game_api.h"
|
|
|
|
#include "state.h"
|
|
|
|
|
|
|
|
#include <malloc.h>
|
|
|
|
|
|
|
|
|
2024-08-21 13:55:34 +00:00
|
|
|
void game_tick(t_ctx *ctx) {
|
|
|
|
/* do state initialization when engine asks for it */
|
|
|
|
/* it could happen multiple times per application run, as game code is reloadable */
|
|
|
|
if (ctx.initialization_needed) {
|
2024-07-29 22:20:30 +00:00
|
|
|
/* application data could be stored in ctx.udata and retrieved anywhere */
|
2024-08-21 13:55:34 +00:00
|
|
|
if (!ctx.udata)
|
|
|
|
ctx.udata = ccalloc(1, sizeof (struct state));
|
2024-07-29 22:20:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* a lot of data is accessible from `ctx`, look into `townengine/context.h` for more */
|
|
|
|
|
|
|
|
struct state *state = ctx.udata;
|
|
|
|
++state->counter;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void game_end(void) {
|
|
|
|
/* do your deinitialization here */
|
|
|
|
struct state *state = ctx.udata;
|
|
|
|
free(state);
|
|
|
|
}
|