aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-10-01 19:36:15 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-10-01 19:36:15 -0600
commit939c371224e94f0ea4bdfb5f67e50b7ab943127c (patch)
treee786f0c2c551a0d4ea6ebf64878a293a85778d69 /src
parente68a40c4da4093a51ea7596757413ca4964ff51f (diff)
Worked on levels a bit more
Diffstat (limited to 'src')
-rw-r--r--src/levels.c22
-rw-r--r--src/levels.h21
2 files changed, 35 insertions, 8 deletions
diff --git a/src/levels.c b/src/levels.c
index ff2b2b6..5f1bce1 100644
--- a/src/levels.c
+++ b/src/levels.c
@@ -2,3 +2,25 @@
const LevelInfo levelInfoList[LEVELS_COUNT] = {
};
+
+void initLevels(Levels * levels) {
+ levels->currentLevel = 0;
+ levels->data = NULL;
+}
+
+void freeLevels(Levels * levels) {
+ if (levels->data != NULL)
+ KF_FREE(levels->data);
+
+ levels->data = NULL;
+}
+
+void startLevel(Game * game, Levels * levels, int levelNum) {
+ levels->currentLevel = levelNum;
+ levelInfoList[levelNum].initCb(game, levels);
+}
+
+void endLevel(Levels * levels) {
+ freeLevels(levels);
+}
+
diff --git a/src/levels.h b/src/levels.h
index 8630757..d349a93 100644
--- a/src/levels.h
+++ b/src/levels.h
@@ -7,16 +7,15 @@
#define LEVELS_COUNT 1
-typedef struct Level Level;
+typedef struct Levels Levels;
-typedef void (*LevelInitCb)(Game * game, Level * level);
-typedef void (*LevelUpdateCb)(Game * game, Level * level);
+typedef void (*LevelInitCb)(Game * game, Levels * levels);
+typedef bool (*LevelUpdateCb)(Game * game, Levels * levels); // Returns true when level is complete
-typedef struct Level {
- WorldEntry * entries;
- size_t entriesCount;
- LevelUpdateCb updateCb;
-} Level;
+typedef struct Levels {
+ int currentLevel;
+ void * data; // Null if not used.
+} Levels;
typedef struct LevelInfo {
LevelInitCb initCb;
@@ -25,4 +24,10 @@ typedef struct LevelInfo {
extern const LevelInfo levelInfoList[LEVELS_COUNT];
+void initLevels(Levels * levels);
+void freeLevels(Levels * levels);
+
+void startLevel(Game * game, Levels * levels, int levelNum);
+void endLevel(Levels * levels);
+
#endif