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 #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 graphics_mod_user_directories =