summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/DynamicInputTextureManager.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2019-08-17 14:40:58 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2020-10-03 17:10:35 -0500
commitfd3af4c5d32a34b27c45b478c74fa1127b6438b9 (patch)
treedf55a2548a01e0cd0578abb41f2c9ad78d1db544 /Source/Core/InputCommon/DynamicInputTextureManager.cpp
parent8a1539f9487cff0b5785e2d341663e4d7136e2a3 (diff)
InputCommon: Introducing the "Dynamic Input Texture". Configuration links an emulated input action to an image based on what host key is defined for that emulated input. Specific regions are called out in configuration that mark where to replace an input button with a host key image.
Diffstat (limited to 'Source/Core/InputCommon/DynamicInputTextureManager.cpp')
-rw-r--r--Source/Core/InputCommon/DynamicInputTextureManager.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp
new file mode 100644
index 0000000000..437d083ee9
--- /dev/null
+++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp
@@ -0,0 +1,49 @@
+// Copyright 2019 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include "InputCommon/DynamicInputTextureManager.h"
+
+#include <set>
+
+#include "Common/CommonPaths.h"
+#include "Common/FileSearch.h"
+#include "Common/FileUtil.h"
+#include "Core/ConfigManager.h"
+
+#include "InputCommon/DynamicInputTextureConfiguration.h"
+#include "VideoCommon/HiresTextures.h"
+
+namespace InputCommon
+{
+DynamicInputTextureManager::DynamicInputTextureManager() = default;
+
+DynamicInputTextureManager::~DynamicInputTextureManager() = default;
+
+void DynamicInputTextureManager::Load()
+{
+ m_configuration.clear();
+
+ const std::string& game_id = SConfig::GetInstance().GetGameID();
+ const std::set<std::string> dynamic_input_directories =
+ GetTextureDirectoriesWithGameId(File::GetUserPath(D_DYNAMICINPUT_IDX), game_id);
+
+ for (const auto& dynamic_input_directory : dynamic_input_directories)
+ {
+ const auto json_files = Common::DoFileSearch({dynamic_input_directory}, {".json"});
+ for (auto& file : json_files)
+ {
+ m_configuration.emplace_back(file);
+ }
+ }
+}
+
+void DynamicInputTextureManager::GenerateTextures(const IniFile::Section* sec,
+ const std::string& controller_name)
+{
+ for (const auto& configuration : m_configuration)
+ {
+ configuration.GenerateTextures(sec, controller_name);
+ }
+}
+} // namespace InputCommon