void LoadPlayerTemplates( CArray *templates, const CharacterClasses *classes, const char *filename) { // Note: not used, but included in function to express dependency CASSERT(classes->Classes.size > 0, "cannot load player templates without character classes"); json_t *root = NULL; int version = 1; // initialise templates CArrayInit(templates, sizeof(PlayerTemplate)); FILE *f = fopen(GetConfigFilePath(filename), "r"); if (!f) { printf("Error loading player templates '%s'\n", filename); goto bail; } if (json_stream_parse(f, &root) != JSON_OK) { printf("Error parsing player templates '%s'\n", filename); goto bail; } LoadInt(&version, root, "Version"); if (json_find_first_label(root, "PlayerTemplates") == NULL) { printf("Error: unknown player templates format\n"); goto bail; } json_t *child = json_find_first_label(root, "PlayerTemplates")->child->child; while (child != NULL) { PlayerTemplate t; LoadPlayerTemplate(&t, child, version); child = child->next; CArrayPushBack(templates, &t); } bail: json_free_value(&root); if (f != NULL) { fclose(f); } }
void LoadPlayerTemplates(CArray *templates, const char *filename) { json_t *root = NULL; // initialise templates CArrayInit(templates, sizeof(PlayerTemplate)); FILE *f = fopen(GetConfigFilePath(filename), "r"); if (!f) { printf("Error loading player templates '%s'\n", filename); goto bail; } if (json_stream_parse(f, &root) != JSON_OK) { printf("Error parsing player templates '%s'\n", filename); goto bail; } if (json_find_first_label(root, "PlayerTemplates") == NULL) { printf("Error: unknown player templates format\n"); goto bail; } json_t *child = json_find_first_label(root, "PlayerTemplates")->child->child; while (child != NULL) { PlayerTemplate t; LoadPlayerTemplate(&t, child); child = child->next; CArrayPushBack(templates, &t); } bail: json_free_value(&root); if (f != NULL) { fclose(f); } }