summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2022-06-28 13:35:39 -0400
committerGitHub <noreply@github.com>2022-06-28 13:35:39 -0400
commit5d04e1e1de8248da8366f6f99ff4cdbe5467c789 (patch)
tree47ff1e96f099cef3443635b982d03e2bf1ce3f04 /Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
parente50e45f400856191eafb5f0c6044a8efbf152321 (diff)
parent8aef0015fd8903b92cf0aab8a98ee669ec97b5ef (diff)
Merge pull request #10518 from iwubcode/draw-mod
Introducing a 'GraphicsMod' system for creators
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h')
-rw-r--r--Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
new file mode 100644
index 0000000000..f4f6859cb3
--- /dev/null
+++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
@@ -0,0 +1,45 @@
+// Copyright 2022 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <optional>
+#include <string>
+#include <vector>
+
+#include <picojson.h>
+
+#include "VideoCommon/GraphicsModSystem/Config/GraphicsModFeature.h"
+#include "VideoCommon/GraphicsModSystem/Config/GraphicsTargetGroup.h"
+
+struct GraphicsModConfig
+{
+ std::string m_title;
+ std::string m_author;
+ std::string m_description;
+ bool m_enabled = false;
+ u16 m_weight = 0;
+ std::string m_relative_path;
+
+ enum class Source
+ {
+ User,
+ System
+ };
+ Source m_source = Source::User;
+
+ std::vector<GraphicsTargetGroupConfig> m_groups;
+ std::vector<GraphicsModFeatureConfig> m_features;
+
+ static std::optional<GraphicsModConfig> Create(const std::string& file, Source source);
+ static std::optional<GraphicsModConfig> Create(const picojson::object* obj);
+
+ std::string GetAbsolutePath() const;
+
+ bool DeserializeFromConfig(const picojson::value& value);
+
+ void SerializeToProfile(picojson::object* value) const;
+ void DeserializeFromProfile(const picojson::object& value);
+
+ bool operator<(const GraphicsModConfig& other) const;
+};