diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-09-08 09:02:27 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-09-08 09:02:27 +0200 |
commit | 3fb4ce713fb7fdef2753009967fa58103fa69974 (patch) | |
tree | e1d9b9db3168a631100fb37fde4359d9d857e52a /api/logic/minecraft/flame/FileResolvingTask.cpp | |
parent | 32a2cb5a0dabbe19eef04f378824af8a10487d97 (diff) | |
download | MultiMC-3fb4ce713fb7fdef2753009967fa58103fa69974.tar MultiMC-3fb4ce713fb7fdef2753009967fa58103fa69974.tar.gz MultiMC-3fb4ce713fb7fdef2753009967fa58103fa69974.tar.lz MultiMC-3fb4ce713fb7fdef2753009967fa58103fa69974.tar.xz MultiMC-3fb4ce713fb7fdef2753009967fa58103fa69974.zip |
NOISSUE add support for Flame packs with resource packs
And a bunch of undefined things we don't handle intentionally just yet...
Diffstat (limited to 'api/logic/minecraft/flame/FileResolvingTask.cpp')
-rw-r--r-- | api/logic/minecraft/flame/FileResolvingTask.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/api/logic/minecraft/flame/FileResolvingTask.cpp b/api/logic/minecraft/flame/FileResolvingTask.cpp index d55beb63..2194983a 100644 --- a/api/logic/minecraft/flame/FileResolvingTask.cpp +++ b/api/logic/minecraft/flame/FileResolvingTask.cpp @@ -49,6 +49,51 @@ void Flame::FileResolvingTask::netJobFinished() } out.fileName = Json::requireString(obj, "FileNameOnDisk"); out.url = Json::requireString(obj, "DownloadURL"); + // This is a piece of a Flame project JSON pulled out into the file metadata (here) for convenience + // It is also optional + QJsonObject projObj = Json::ensureObject(obj, "_Project", {}); + if(!projObj.isEmpty()) + { + QString strType = Json::ensureString(projObj, "PackageType", "mod").toLower(); + if(strType == "singlefile") + { + out.type = File::Type::SingleFile; + } + // FIXME: what are these? + /* + else if(strType == "ctoc") + { + out.type = File::Type::Ctoc; + } + else if(strType == "cmod2") + { + out.type = File::Type::Cmod2; + } + */ + else if(strType == "mod") + { + out.type = File::Type::Mod; + } + // FIXME: how to handle nested packs and folders? + /* + else if(strType == "folder") + { + out.type = File::Type::Folder; + } + else if(strType == "modpack") + { + out.type = File::Type::Modpack; + } + */ + else + { + qCritical() << "Resolving of" << out.projectId << out.fileId << "failed because of unknown file type:" << strType; + out.type = File::Type::Unknown; + failed = true; + continue; + } + out.targetFolder = Json::ensureString(projObj, "Path", "mods"); + } out.resolved = true; } catch(JSONValidationError & e) |