VideoCommon: pass a graphics mod base path to the graphics mod, so it can lookup other relative files if necessary

This commit is contained in:
iwubcode 2023-01-27 18:35:05 -06:00
parent fbb3db71b2
commit 20dc4401c5
3 changed files with 9 additions and 3 deletions

View File

@ -10,7 +10,8 @@
namespace GraphicsModActionFactory
{
std::unique_ptr<GraphicsModAction> Create(std::string_view name, const picojson::value& json_data)
std::unique_ptr<GraphicsModAction> Create(std::string_view name, const picojson::value& json_data,
std::string_view path)
{
if (name == "print")
{

View File

@ -12,5 +12,6 @@
namespace GraphicsModActionFactory
{
std::unique_ptr<GraphicsModAction> Create(std::string_view name, const picojson::value& json_data);
std::unique_ptr<GraphicsModAction> Create(std::string_view name, const picojson::value& json_data,
std::string_view path);
}

View File

@ -8,6 +8,7 @@
#include <variant>
#include "Common/Logging/Log.h"
#include "Common/StringUtil.h"
#include "Common/VariantUtil.h"
#include "Core/ConfigManager.h"
@ -198,7 +199,10 @@ void GraphicsModManager::Load(const GraphicsModGroupConfig& config)
const auto create_action =
[](const std::string_view& action_name, const picojson::value& json_data,
GraphicsModConfig mod_config) -> std::unique_ptr<GraphicsModAction> {
auto action = GraphicsModActionFactory::Create(action_name, json_data);
std::string base_path;
SplitPath(mod_config.GetAbsolutePath(), &base_path, nullptr, nullptr);
auto action = GraphicsModActionFactory::Create(action_name, json_data, base_path);
if (action == nullptr)
{
return nullptr;