summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp')
-rw-r--r--Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp
index e3cf5b9a10..c0fa1f82ca 100644
--- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp
+++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp
@@ -10,6 +10,7 @@
#include <picojson.h>
#include "Common/CommonPaths.h"
+#include "Common/FileSearch.h"
#include "Common/FileUtil.h"
#include "Common/JsonUtil.h"
#include "Common/Logging/Log.h"
@@ -84,13 +85,22 @@ void GraphicsModGroupConfig::Load()
const auto try_add_mod = [&known_paths, this](const std::string& dir,
GraphicsModConfig::Source source) {
- auto file = dir + DIR_SEP + "metadata.json";
- UnifyPathSeparators(file);
- if (known_paths.contains(file))
- return;
+ const auto files = Common::DoFileSearch(dir, ".json", true);
+ for (const auto& file : files)
+ {
+ std::string basename;
+ SplitPath(file, nullptr, &basename, nullptr);
+ if (basename == "metadata")
+ {
+ auto file_copy = file;
+ UnifyPathSeparators(file_copy);
+ if (known_paths.contains(file_copy))
+ return;
- if (auto mod = GraphicsModConfig::Create(file, source))
- m_graphics_mods.push_back(std::move(*mod));
+ if (auto mod = GraphicsModConfig::Create(file_copy, source))
+ m_graphics_mods.push_back(std::move(*mod));
+ }
+ }
};
const std::set<std::string> graphics_mod_user_directories =