From 88c386d74d7d94ec16d4d84ed674eb51e31647ac Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Sun, 9 Jun 2024 12:18:17 +0200 Subject: Refactoring of game features for better management. (#2043) --- src/profilesdialog.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/profilesdialog.cpp') diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp index f8010ada..24eddc20 100644 --- a/src/profilesdialog.cpp +++ b/src/profilesdialog.cpp @@ -22,6 +22,7 @@ along with Mod Organizer. If not, see . #include "bsainvalidation.h" #include "filesystemutilities.h" +#include "game_features.h" #include "iplugingame.h" #include "localsavegames.h" #include "organizercore.h" @@ -52,7 +53,8 @@ Q_DECLARE_METATYPE(Profile::Ptr) ProfilesDialog::ProfilesDialog(const QString& profileName, OrganizerCore& organizer, QWidget* parent) : TutorableDialog("Profiles", parent), ui(new Ui::ProfilesDialog), - m_FailState(false), m_Game(organizer.managedGame()), m_ActiveProfileName("") + m_GameFeatures(organizer.gameFeatures()), m_FailState(false), + m_Game(organizer.managedGame()), m_ActiveProfileName("") { ui->setupUi(this); @@ -70,15 +72,14 @@ ProfilesDialog::ProfilesDialog(const QString& profileName, OrganizerCore& organi } } - BSAInvalidation* invalidation = m_Game->feature(); - + auto invalidation = m_GameFeatures.gameFeature(); if (invalidation == nullptr) { ui->invalidationBox->setToolTip( tr("Archive invalidation isn't required for this game.")); ui->invalidationBox->setEnabled(false); } - if (!m_Game->feature()) { + if (!m_GameFeatures.gameFeature()) { ui->localSavesBox->setToolTip( tr("This game does not support profile-specific game saves.")); ui->localSavesBox->setEnabled(false); @@ -149,8 +150,8 @@ QListWidgetItem* ProfilesDialog::addItem(const QString& name) QListWidgetItem* newItem = new QListWidgetItem(profileDir.dirName(), ui->profilesList); try { - newItem->setData(Qt::UserRole, QVariant::fromValue( - Profile::Ptr(new Profile(profileDir, m_Game)))); + newItem->setData(Qt::UserRole, QVariant::fromValue(Profile::Ptr(new Profile( + profileDir, m_Game, m_GameFeatures)))); m_FailState = false; } catch (const std::exception& e) { reportError(tr("failed to create profile: %1").arg(e.what())); @@ -161,7 +162,8 @@ QListWidgetItem* ProfilesDialog::addItem(const QString& name) void ProfilesDialog::createProfile(const QString& name, bool useDefaultSettings) { try { - auto profile = Profile::Ptr(new Profile(name, m_Game, useDefaultSettings)); + auto profile = + Profile::Ptr(new Profile(name, m_Game, m_GameFeatures, useDefaultSettings)); QListWidgetItem* newItem = new QListWidgetItem(name, ui->profilesList); newItem->setData(Qt::UserRole, QVariant::fromValue(profile)); ui->profilesList->addItem(newItem); -- cgit v1.3.1