aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/flame/FlameModIndex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/modplatform/flame/FlameModIndex.cpp')
-rw-r--r--launcher/modplatform/flame/FlameModIndex.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp
index 494dc2a7..2adcd781 100644
--- a/launcher/modplatform/flame/FlameModIndex.cpp
+++ b/launcher/modplatform/flame/FlameModIndex.cpp
@@ -96,8 +96,9 @@ void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
}
auto orderSortPredicate = [](const ModPlatform::IndexedVersion& a, const ModPlatform::IndexedVersion& b) -> bool {
+ bool a_better_release = a.version_type <= b.version_type;
// dates are in RFC 3339 format
- return a.date > b.date;
+ return a.date > b.date && a_better_release;
};
std::sort(unsortedVersions.begin(), unsortedVersions.end(), orderSortPredicate);
pack.versions = unsortedVersions;
@@ -139,6 +140,22 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) ->
file.downloadUrl = Json::ensureString(obj, "downloadUrl");
file.fileName = Json::requireString(obj, "fileName");
+ ModPlatform::IndexedVersionType::VersionType ver_type;
+ switch (Json::requireInteger(obj, "releaseType")) {
+ case 1:
+ ver_type = ModPlatform::IndexedVersionType::VersionType::Release;
+ break;
+ case 2:
+ ver_type = ModPlatform::IndexedVersionType::VersionType::Beta;
+ break;
+ case 3:
+ ver_type = ModPlatform::IndexedVersionType::VersionType::Alpha;
+ break;
+ default:
+ ver_type = ModPlatform::IndexedVersionType::VersionType::Unknown;
+ }
+ file.version_type = ModPlatform::IndexedVersionType(ver_type);
+
auto hash_list = Json::ensureArray(obj, "hashes");
for (auto h : hash_list) {
auto hash_entry = Json::ensureObject(h);