From 9b53def82a31ad802d15722b7e87858b655902fd Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 23 Oct 2024 13:14:18 +0300 Subject: [PATCH] fix: dependency level prefix is ignored --- src/content/ContentPack.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/content/ContentPack.cpp b/src/content/ContentPack.cpp index 05ee21e9..777e8ae1 100644 --- a/src/content/ContentPack.cpp +++ b/src/content/ContentPack.cpp @@ -4,12 +4,13 @@ #include #include -#include "constants.hpp" #include "coders/json.hpp" +#include "constants.hpp" #include "data/dv.hpp" #include "files/engine_paths.hpp" #include "files/files.hpp" + namespace fs = std::filesystem; ContentPack ContentPack::createCore(const EnginePaths* paths) { @@ -78,13 +79,26 @@ ContentPack ContentPack::read(const fs::path& folder) { root.at("creator").get(pack.creator); root.at("description").get(pack.description); pack.folder = folder; - + if (auto found = root.at("dependencies")) { const auto& dependencies = *found; for (const auto& elem : dependencies) { - pack.dependencies.push_back( - {DependencyLevel::required, elem.asString()} - ); + std::string depName = elem.asString(); + auto level = DependencyLevel::required; + switch (depName.at(0)) { + case '!': + depName = depName.substr(1); + break; + case '?': + depName = depName.substr(1); + level = DependencyLevel::optional; + break; + case '~': + depName = depName.substr(1); + level = DependencyLevel::weak; + break; + } + pack.dependencies.push_back({level, depName}); } }