From 5782af6107d5c841ca0a37ffa46ee1496245eaac Mon Sep 17 00:00:00 2001 From: iwubcode Date: Thu, 14 Mar 2024 08:20:00 -0500 Subject: [PATCH] DolphinQt: update for graphics mod 2.0 --- .../Config/GraphicsModListWidget.cpp | 60 +++++++------------ .../DolphinQt/Config/GraphicsModListWidget.h | 6 +- 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp b/Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp index 5bd1166d32..b1703d674a 100644 --- a/Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp +++ b/Source/Core/DolphinQt/Config/GraphicsModListWidget.cpp @@ -23,7 +23,6 @@ #include "DolphinQt/QtUtils/ClearLayoutRecursively.h" #include "DolphinQt/Settings.h" #include "UICommon/GameFile.h" -#include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h" #include "VideoCommon/VideoConfig.h" GraphicsModListWidget::GraphicsModListWidget(const UICommon::GameFile& game) @@ -38,7 +37,7 @@ GraphicsModListWidget::GraphicsModListWidget(const UICommon::GameFile& game) ConnectWidgets(); RefreshModList(); - OnModChanged(std::nullopt); + OnModChanged(0); } GraphicsModListWidget::~GraphicsModListWidget() @@ -124,30 +123,17 @@ void GraphicsModListWidget::RefreshModList() m_mod_list->setCurrentItem(nullptr); m_mod_list->clear(); - m_mod_group = GraphicsModGroupConfig(m_game_id); + m_mod_group = GraphicsModSystem::Config::GraphicsModGroup(m_game_id); m_mod_group.Load(); - std::set groups; - - for (const GraphicsModConfig& mod : m_mod_group.GetMods()) + for (const auto& mod : m_mod_group.GetMods()) { - for (const GraphicsTargetGroupConfig& group : mod.m_groups) - groups.insert(group.m_name); - } - - for (const GraphicsModConfig& mod : m_mod_group.GetMods()) - { - // If no group matches the mod's features, or if the mod has no features, skip it - if (std::ranges::none_of(mod.m_features, [&groups](const GraphicsModFeatureConfig& feature) { - return groups.contains(feature.m_group); - })) - { + if (mod.m_mod.m_actions.empty()) continue; - } - QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(mod.m_title)); + QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(mod.m_mod.m_title)); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); - item->setData(Qt::UserRole, QString::fromStdString(mod.GetAbsolutePath())); + item->setData(Qt::UserRole, static_cast(mod.m_id)); item->setCheckState(mod.m_enabled ? Qt::Checked : Qt::Unchecked); m_mod_list->addItem(item); @@ -160,14 +146,13 @@ void GraphicsModListWidget::ModSelectionChanged() return; if (m_mod_list->count() == 0) return; - const auto absolute_path = m_mod_list->currentItem()->data(Qt::UserRole).toString().toStdString(); - OnModChanged(absolute_path); + OnModChanged(m_mod_list->currentItem()->data(Qt::UserRole).toULongLong()); } void GraphicsModListWidget::ModItemChanged(QListWidgetItem* item) { - const auto absolute_path = item->data(Qt::UserRole).toString(); - GraphicsModConfig* mod = m_mod_group.GetMod(absolute_path.toStdString()); + const auto id = item->data(Qt::UserRole).toULongLong(); + auto mod = m_mod_group.GetMod(id); if (!mod) return; @@ -185,39 +170,39 @@ void GraphicsModListWidget::ModItemChanged(QListWidgetItem* item) m_needs_save = true; } -void GraphicsModListWidget::OnModChanged(const std::optional& absolute_path) +void GraphicsModListWidget::OnModChanged(u64 id) { ClearLayoutRecursively(m_mod_meta_layout); adjustSize(); - if (!absolute_path) + if (id == 0) { m_selected_mod_name->setText(tr("No graphics mod selected")); m_selected_mod_name->setAlignment(Qt::AlignCenter); return; } - const GraphicsModConfig* mod = m_mod_group.GetMod(*absolute_path); + const auto mod = m_mod_group.GetMod(id); if (!mod) return; - m_selected_mod_name->setText(QString::fromStdString(mod->m_title)); + m_selected_mod_name->setText(QString::fromStdString(mod->m_mod.m_title)); m_selected_mod_name->setAlignment(Qt::AlignLeft); QFont font = m_selected_mod_name->font(); font.setWeight(QFont::Bold); m_selected_mod_name->setFont(font); - if (!mod->m_author.empty()) + if (!mod->m_mod.m_author.empty()) { - auto* author_label = new QLabel(tr("By: %1").arg(QString::fromStdString(mod->m_author))); + auto* author_label = new QLabel(tr("By: %1").arg(QString::fromStdString(mod->m_mod.m_author))); m_mod_meta_layout->addWidget(author_label); } - if (!mod->m_description.empty()) + if (!mod->m_mod.m_description.empty()) { auto* description_label = - new QLabel(tr("Description: %1").arg(QString::fromStdString(mod->m_description))); + new QLabel(tr("Description: %1").arg(QString::fromStdString(mod->m_mod.m_description))); description_label->setWordWrap(true); m_mod_meta_layout->addWidget(description_label); } @@ -227,11 +212,9 @@ void GraphicsModListWidget::SaveModList() { for (int i = 0; i < m_mod_list->count(); i++) { - const auto absolute_path = m_mod_list->model() - ->data(m_mod_list->model()->index(i, 0), Qt::UserRole) - .toString() - .toStdString(); - m_mod_group.GetMod(absolute_path)->m_weight = i; + const auto id = + m_mod_list->model()->data(m_mod_list->model()->index(i, 0), Qt::UserRole).toULongLong(); + m_mod_group.GetMod(id)->m_weight = i; } if (m_loaded_game_is_running) @@ -247,7 +230,8 @@ void GraphicsModListWidget::SaveToDisk() m_mod_group.Save(); } -const GraphicsModGroupConfig& GraphicsModListWidget::GetGraphicsModConfig() const +const GraphicsModSystem::Config::GraphicsModGroup& +GraphicsModListWidget::GetGraphicsModConfig() const { return m_mod_group; } diff --git a/Source/Core/DolphinQt/Config/GraphicsModListWidget.h b/Source/Core/DolphinQt/Config/GraphicsModListWidget.h index ff310af56c..3e28937dca 100644 --- a/Source/Core/DolphinQt/Config/GraphicsModListWidget.h +++ b/Source/Core/DolphinQt/Config/GraphicsModListWidget.h @@ -39,7 +39,7 @@ public: void SaveToDisk(); - const GraphicsModGroupConfig& GetGraphicsModConfig() const; + const GraphicsModSystem::Config::GraphicsModGroup& GetGraphicsModConfig() const; signals: void OpenGraphicsSettings(); @@ -52,7 +52,7 @@ private: void ModSelectionChanged(); void ModItemChanged(QListWidgetItem* item); - void OnModChanged(const std::optional& absolute_path); + void OnModChanged(u64 id); void SaveModList(); @@ -72,5 +72,5 @@ private: GraphicsModWarningWidget* m_warning; std::string m_game_id; - GraphicsModGroupConfig m_mod_group; + GraphicsModSystem::Config::GraphicsModGroup m_mod_group; };