#include "game/LevelList.h" #include #include "game/Level.h" #include "shell/Shell.h" #include "utilities/IOUtilities.h" #include "utilities/JSONParser.h" LevelList * LevelList_fromJSON(JSONNode * node) { LevelList * self; unsigned int nodeIndex; JSONNode * levelNode; if (node == NULL) { return NULL; } self = malloc(sizeof(LevelList)); self->levelCount = 0; self->levels = malloc(sizeof(Level *) * node->numberOfChildren); for (nodeIndex = 0; nodeIndex < node->numberOfChildren; nodeIndex++) { levelNode = NULL; self->levels[nodeIndex] = NULL; levelNode = jsonFromFile(resourcePath(node->children[nodeIndex].value.string)); if (levelNode != NULL) { self->levels[nodeIndex] = Level_fromJSON(levelNode); } if (self->levels[nodeIndex] == NULL) { LevelList_dispose(self); return NULL; } self->levelCount++; } return self; } void LevelList_dispose(LevelList * self) { unsigned int levelIndex; for (levelIndex = 0; levelIndex < self->levelCount; levelIndex++) { Level_dispose(self->levels[levelIndex]); } free(self->levels); free(self); }