summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/DynamicInputTextures
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/DynamicInputTextures')
-rw-r--r--Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp42
-rw-r--r--Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.h15
2 files changed, 24 insertions, 33 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp
index 870dbf9bba..cced429e81 100644
--- a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp
+++ b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.cpp
@@ -10,7 +10,6 @@
#include <picojson.h>
#include "Common/CommonPaths.h"
-#include "Common/FileUtil.h"
#include "Common/IniFile.h"
#include "Common/JsonUtil.h"
#include "Common/Logging/Log.h"
@@ -68,26 +67,30 @@ Configuration::Configuration(const std::string& json_path)
Configuration::~Configuration() = default;
-bool Configuration::GenerateTextures(const Common::IniFile& file,
- const std::vector<std::string>& controller_names) const
+void Configuration::GenerateTextures(const Common::IniFile& file,
+ const std::vector<std::string>& controller_names,
+ OutputDetails* output) const
{
- bool any_dirty = false;
for (const auto& texture_data : m_dynamic_input_textures)
{
- any_dirty |= GenerateTexture(file, controller_names, texture_data);
+ GenerateTexture(file, controller_names, texture_data, output);
}
-
- return any_dirty;
}
-bool Configuration::GenerateTexture(const Common::IniFile& file,
+void Configuration::GenerateTexture(const Common::IniFile& file,
const std::vector<std::string>& controller_names,
- const Data& texture_data) const
+ const Data& texture_data, OutputDetails* output) const
{
// Two copies of the loaded texture
// The first one is used as a fallback if a key or device isn't mapped
// the second one is used as the final image to write to the textures directory
const auto original_image = LoadImage(m_base_path + texture_data.m_image_name);
+ if (!original_image)
+ {
+ ERROR_LOG_FMT(VIDEO, "Failed to load image '{}' needed for dynamic input texture generation",
+ texture_data.m_image_name);
+ return;
+ }
auto image_to_write = original_image;
bool dirty = false;
@@ -179,25 +182,8 @@ bool Configuration::GenerateTexture(const Common::IniFile& file,
if (dirty)
{
- const std::string& game_id = SConfig::GetInstance().GetGameID();
- const auto hi_res_folder =
- File::GetUserPath(D_HIRESTEXTURES_IDX) + texture_data.m_generated_folder_name;
- if (!File::IsDirectory(hi_res_folder))
- {
- File::CreateDir(hi_res_folder);
- }
- WriteImage(hi_res_folder + DIR_SEP + texture_data.m_hires_texture_name, *image_to_write);
-
- const auto game_id_folder = hi_res_folder + DIR_SEP + "gameids";
- if (!File::IsDirectory(game_id_folder))
- {
- File::CreateDir(game_id_folder);
- }
- File::CreateEmptyFile(game_id_folder + DIR_SEP + game_id + ".txt");
-
- return true;
+ (*output)[texture_data.m_generated_folder_name][texture_data.m_hires_texture_name] =
+ std::move(*image_to_write);
}
-
- return false;
}
} // namespace InputCommon::DynamicInputTextures
diff --git a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.h b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.h
index 145099ea27..68a55c2af4 100644
--- a/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.h
+++ b/Source/Core/InputCommon/DynamicInputTextures/DITConfiguration.h
@@ -3,11 +3,13 @@
#pragma once
+#include <map>
#include <string>
#include <vector>
#include "Common/CommonTypes.h"
#include "InputCommon/DynamicInputTextures/DITData.h"
+#include "InputCommon/ImageOperations.h"
namespace Common
{
@@ -16,18 +18,21 @@ class IniFile;
namespace InputCommon::DynamicInputTextures
{
+// Output folder name to image name to image data
+using OutputDetails = std::map<std::string, std::map<std::string, ImagePixelData>>;
class Configuration
{
public:
explicit Configuration(const std::string& json_path);
~Configuration();
- bool GenerateTextures(const Common::IniFile& file,
- const std::vector<std::string>& controller_names) const;
+ void GenerateTextures(const Common::IniFile& file,
+ const std::vector<std::string>& controller_names,
+ OutputDetails* output) const;
private:
- bool GenerateTexture(const Common::IniFile& file,
- const std::vector<std::string>& controller_names,
- const Data& texture_data) const;
+ void GenerateTexture(const Common::IniFile& file,
+ const std::vector<std::string>& controller_names, const Data& texture_data,
+ OutputDetails* output) const;
std::vector<Data> m_dynamic_input_textures;
std::string m_base_path;