summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp
diff options
context:
space:
mode:
authorMai <mai.iam2048@gmail.com>2024-01-13 14:15:14 -0500
committerGitHub <noreply@github.com>2024-01-13 14:15:14 -0500
commitc76dee7807c331582cfb36376329e760eab3f704 (patch)
treed23651bae65a55a62db9e9a8b9ce69b0d4324c1c /Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp
parent1cca3b24c67d1cc58d6551ffc87bd54c64a27e97 (diff)
parent3658d3bffed6bdf4d31a2b2264bd3944101318c8 (diff)
Merge pull request #12285 from iwubcode/serialize_graphics_mods
VideoCommon: add ability to serialize graphics mod to json object
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp')
-rw-r--r--Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModAsset.cpp21
1 files changed, 17 insertions, 4 deletions
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<picojson::object>())
@@ -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<picojson::object>())
@@ -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();