From f22a4557c99a8541d2ce3e3f8b61db5a33f4240b Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Sun, 1 Oct 2023 19:46:39 -0600 Subject: Better design for level handling --- src/levels.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/levels.c') diff --git a/src/levels.c b/src/levels.c index 5f1bce1..221da15 100644 --- a/src/levels.c +++ b/src/levels.c @@ -4,14 +4,7 @@ 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->currentLevel = NO_LEVEL; levels->data = NULL; } @@ -20,7 +13,16 @@ void startLevel(Game * game, Levels * levels, int levelNum) { levelInfoList[levelNum].initCb(game, levels); } +void updateLevel(Game * game, Levels * levels) { + if (levels->currentLevel != NO_LEVEL) + levelInfoList[levels->currentLevel].updateCb(game, levels); +} + void endLevel(Levels * levels) { - freeLevels(levels); + if (levels->currentLevel != NO_LEVEL) + levelInfoList[levels->currentLevel].closeCb(levels); + + levels->currentLevel = NO_LEVEL; + levels->data = NULL; } -- cgit v1.2.3