bool ShapesScene::addFromJsonFile(const std::string &path, std::string &errorReason) { json11::Json json; if (FILE *file = fopen(path.c_str(), "r")) { std::string jsonContent; std::array<char, 64 * 1024> buffer; while (size_t len = fread(buffer.data(), sizeof(char), buffer.size(), file)) jsonContent.append(buffer.data(), len); if (ferror(file)) { fclose(file); errorReason = "Failed to completely read scene file content"; return false; } fclose(file); json = json11::Json::parse(jsonContent, errorReason); if (json.is_null()) return false; } else { errorReason = "Failed to read scene file content"; return false; } std::string incorrectJson; if (!addFromJson(json, incorrectJson)) { errorReason = "Scene file corrupted, incorrect JSON part: " + incorrectJson; return false; } return true; }
ResourceMap(ResourcePackage package) { m_name = package.getName(); m_type = package.getType(); for (json11::Json j : package.getJsonManifest()) { if (j["type"].string_value() == T::getTypeName()) { addFromJson(j); } } }