A game engine for top-down 2D RPG games.
rpg
game-engine
raylib
c99
1#include <keraforge.h>
2
3
4#define _KF_STATEFILE "data/state.bin"
5
6int kf_state_save(struct kf_state *state)
7{
8 if (!kf_writebin(_KF_STATEFILE, (u8 *)state, sizeof(*state)))
9 {
10 KF_THROW("failed to write to %s", _KF_STATEFILE);
11 return 0; /* unreachable */
12 }
13
14 return 1;
15}
16
17int kf_state_load(struct kf_state **pstate)
18{
19 char *infile = _KF_STATEFILE;
20 kf_logdbg("loading state: %s", infile);
21
22 int res = 0;
23
24 if (!kf_exists(infile))
25 {
26 kf_logdbg("creating state...");
27 struct kf_state s = {0};
28 kf_state_save(&s);
29 res = 1;
30 }
31
32 size_t len = 0;
33 *pstate = (struct kf_state *)kf_readbin(infile, &len);
34 kf_logdbg("loaded state (%p): len=%lu (res=%d)", *pstate, len, res);
35
36 if (!*pstate)
37 {
38 KF_THROW("failed to load state");
39 return -1; /* unreachable */
40 }
41
42 return res;
43}