From 3658d3bffed6bdf4d31a2b2264bd3944101318c8 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sat, 11 Nov 2023 16:48:18 -0600 Subject: VideoCommon: add ability to serialize graphics mod to json object --- .../GraphicsModSystem/Config/GraphicsModAsset.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp index 5b3141a283..4b51c1c367 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp @@ -4,6 +4,19 @@ #include "VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.h" #include "Common/Logging/Log.h" +#include "Common/StringUtil.h" + +void GraphicsModAssetConfig::SerializeToConfig(picojson::object& json_obj) const +{ + json_obj["name"] = picojson::value{m_asset_id}; + + picojson::object serialized_data; + for (const auto& [name, path] : m_map) + { + serialized_data[name] = picojson::value{PathToString(path)}; + } + json_obj["data"] = picojson::value{serialized_data}; +} bool GraphicsModAssetConfig::DeserializeFromConfig(const picojson::object& obj) { @@ -19,13 +32,13 @@ bool GraphicsModAssetConfig::DeserializeFromConfig(const picojson::object& obj) "that is not a string"); return false; } - m_name = name_iter->second.to_str(); + m_asset_id = name_iter->second.to_str(); auto data_iter = obj.find("data"); if (data_iter == obj.end()) { ERROR_LOG_FMT(VIDEO, "Failed to load mod configuration file, specified asset '{}' has no data", - m_name); + m_asset_id); return false; } if (!data_iter->second.is()) @@ -33,7 +46,7 @@ bool GraphicsModAssetConfig::DeserializeFromConfig(const picojson::object& obj) ERROR_LOG_FMT(VIDEO, "Failed to load mod configuration file, specified asset '{}' has data " "that is not an object", - m_name); + m_asset_id); return false; } for (const auto& [key, value] : data_iter->second.get()) @@ -43,7 +56,7 @@ bool GraphicsModAssetConfig::DeserializeFromConfig(const picojson::object& obj) ERROR_LOG_FMT(VIDEO, "Failed to load mod configuration file, specified asset '{}' has data " "with a value for key '{}' that is not a string", - m_name, key); + m_asset_id, key); return false; } m_map[key] = value.to_str(); -- cgit v1.2.3