From 939c371224e94f0ea4bdfb5f67e50b7ab943127c Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Sun, 1 Oct 2023 19:36:15 -0600 Subject: Worked on levels a bit more --- src/levels.c | 22 ++++++++++++++++++++++ src/levels.h | 21 +++++++++++++-------- 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 -- cgit v1.2.3