diff --git a/launcher/include/patcher.h b/launcher/include/patcher.h index ecbad0a..d51fd58 100644 --- a/launcher/include/patcher.h +++ b/launcher/include/patcher.h @@ -17,18 +17,18 @@ class Patcher : public QObject { Q_OBJECT public: - Patcher(LauncherCore &launcher, QString baseDirectory, GameData *game_data, QObject *parent = nullptr); - Patcher(LauncherCore &launcher, QString baseDirectory, BootData *game_data, QObject *parent = nullptr); + Patcher(LauncherCore &launcher, const QString &baseDirectory, GameData &gameData, QObject *parent = nullptr); + Patcher(LauncherCore &launcher, const QString &baseDirectory, BootData &bootData, QObject *parent = nullptr); - QCoro::Task<> patch(QNetworkAccessManager &mgr, const QString &patchList); + QCoro::Task<> patch(const QString &patchList); private: void setupDirectories(); - QString getBaseString() const; + [[nodiscard]] QString getBaseString() const; [[nodiscard]] bool isBoot() const { - return boot_data != nullptr; + return m_bootData != nullptr; } struct QueuedPatch { @@ -38,7 +38,7 @@ private: long length; bool isBoot; - QString getVersion() const + [[nodiscard]] QString getVersion() const { if (isBoot) { return QStringLiteral("ffxivboot - %1").arg(name); @@ -50,14 +50,14 @@ private: void processPatch(const QueuedPatch &patch); - QVector patchQueue; + QVector m_patchQueue; - QDir patchesDir; - QString baseDirectory; - BootData *boot_data = nullptr; - GameData *game_data = nullptr; + QDir m_patchesDir; + QString m_baseDirectory; + BootData *m_bootData = nullptr; + GameData *m_gameData = nullptr; - int remainingPatches = -1; + int m_remainingPatches = -1; LauncherCore &m_launcher; }; diff --git a/launcher/src/patcher.cpp b/launcher/src/patcher.cpp index 9a101b3..fbbe230 100644 --- a/launcher/src/patcher.cpp +++ b/launcher/src/patcher.cpp @@ -12,14 +12,13 @@ #include #include #include -#include #include "launchercore.h" -Patcher::Patcher(LauncherCore &launcher, QString baseDirectory, BootData *boot_data, QObject *parent) +Patcher::Patcher(LauncherCore &launcher, const QString &baseDirectory, BootData &bootData, QObject *parent) : QObject(parent) - , baseDirectory(std::move(baseDirectory)) - , boot_data(boot_data) + , m_baseDirectory(baseDirectory) + , m_bootData(&bootData) , m_launcher(launcher) { setupDirectories(); @@ -27,10 +26,10 @@ Patcher::Patcher(LauncherCore &launcher, QString baseDirectory, BootData *boot_d Q_EMIT m_launcher.stageChanged(i18n("Checking the FINAL FANTASY XIV Updater/Launcher version.")); } -Patcher::Patcher(LauncherCore &launcher, QString baseDirectory, GameData *game_data, QObject *parent) +Patcher::Patcher(LauncherCore &launcher, const QString &baseDirectory, GameData &gameData, QObject *parent) : QObject(parent) - , baseDirectory(std::move(baseDirectory)) - , game_data(game_data) + , m_baseDirectory(baseDirectory) + , m_gameData(&gameData) , m_launcher(launcher) { setupDirectories(); @@ -38,7 +37,7 @@ Patcher::Patcher(LauncherCore &launcher, QString baseDirectory, GameData *game_d Q_EMIT m_launcher.stageChanged(i18n("Checking the FINAL FANTASY XIV Game version.")); } -QCoro::Task<> Patcher::patch(QNetworkAccessManager &mgr, const QString &patchList) +QCoro::Task<> Patcher::patch(const QString &patchList) { if (patchList.isEmpty()) { co_return; @@ -49,8 +48,8 @@ QCoro::Task<> Patcher::patch(QNetworkAccessManager &mgr, const QString &patchLis const QStringList parts = patchList.split("\r\n"); - remainingPatches = parts.size() - 7; - patchQueue.resize(remainingPatches); + m_remainingPatches = parts.size() - 7; + m_patchQueue.resize(m_remainingPatches); QFutureSynchronizer synchronizer; @@ -73,7 +72,7 @@ QCoro::Task<> Patcher::patch(QNetworkAccessManager &mgr, const QString &patchLis auto url_parts = url.split(QLatin1Char('/')); const QString repository = url_parts[url_parts.size() - 3]; - const QDir repositoryDir = patchesDir.absoluteFilePath(repository); + const QDir repositoryDir = m_patchesDir.absoluteFilePath(repository); if (!QDir().exists(repositoryDir.absolutePath())) QDir().mkpath(repositoryDir.absolutePath()); @@ -82,12 +81,12 @@ QCoro::Task<> Patcher::patch(QNetworkAccessManager &mgr, const QString &patchLis const QueuedPatch patch{name, repository, version, patchPath, hashes, hashBlockSize, length, isBoot()}; - patchQueue[ourIndex] = patch; + m_patchQueue[ourIndex] = patch; if (!QFile::exists(patchPath)) { - auto patchReply = mgr.get(QNetworkRequest(url)); + auto patchReply = m_launcher.mgr->get(QNetworkRequest(url)); - connect(patchReply, &QNetworkReply::downloadProgress, [this, patch](int received, int total) { + connect(patchReply, &QNetworkReply::downloadProgress, this, [this, patch](int received, int total) { Q_EMIT m_launcher.stageChanged(i18n("Updating %1.\nDownloading %2", getBaseString(), patch.getVersion())); Q_EMIT m_launcher.stageDeterminate(0, total, received); }); @@ -109,14 +108,12 @@ QCoro::Task<> Patcher::patch(QNetworkAccessManager &mgr, const QString &patchLis // This must happen synchronously size_t i = 0; - for (const auto &patch : patchQueue) { + for (const auto &patch : m_patchQueue) { Q_EMIT m_launcher.stageChanged(i18n("Updating %1.\nInstalling %2", getBaseString(), patch.getVersion())); - Q_EMIT m_launcher.stageDeterminate(0, patchQueue.size(), i++); + Q_EMIT m_launcher.stageDeterminate(0, m_patchQueue.size(), i++); processPatch(patch); } - - co_return; } void Patcher::processPatch(const QueuedPatch &patch) @@ -147,19 +144,19 @@ void Patcher::processPatch(const QueuedPatch &patch) } if (isBoot()) { - physis_bootdata_apply_patch(boot_data, patch.path.toStdString().c_str()); + physis_bootdata_apply_patch(m_bootData, patch.path.toStdString().c_str()); } else { - physis_gamedata_apply_patch(game_data, patch.path.toStdString().c_str()); + physis_gamedata_apply_patch(m_gameData, patch.path.toStdString().c_str()); } QString verFilePath; if (isBoot()) { - verFilePath = baseDirectory + QStringLiteral("/ffxivboot.ver"); + verFilePath = m_baseDirectory + QStringLiteral("/ffxivboot.ver"); } else { if (patch.repository == QLatin1String("game")) { - verFilePath = baseDirectory + QStringLiteral("/ffxivgame.ver"); + verFilePath = m_baseDirectory + QStringLiteral("/ffxivgame.ver"); } else { - verFilePath = baseDirectory + QStringLiteral("/sqpack/") + patch.repository + QStringLiteral("/") + patch.repository + QStringLiteral(".ver"); + verFilePath = m_baseDirectory + QStringLiteral("/sqpack/") + patch.repository + QStringLiteral("/") + patch.repository + QStringLiteral(".ver"); } } @@ -178,7 +175,7 @@ void Patcher::setupDirectories() dataDir.setPath(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); } - patchesDir.setPath(dataDir.absoluteFilePath(QStringLiteral("patches"))); + m_patchesDir.setPath(dataDir.absoluteFilePath(QStringLiteral("patches"))); } QString Patcher::getBaseString() const diff --git a/launcher/src/squareboot.cpp b/launcher/src/squareboot.cpp index 28db402..0325ebd 100644 --- a/launcher/src/squareboot.cpp +++ b/launcher/src/squareboot.cpp @@ -48,7 +48,7 @@ QCoro::Task<> SquareBoot::bootCheck(const LoginInformation &info) co_await reply; patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/boot"), info.profile->bootData, this); - co_await patcher->patch(*window.mgr, reply->readAll()); + co_await patcher->patch(reply->readAll()); // update game version information info.profile->readGameVersion(); diff --git a/launcher/src/squarelauncher.cpp b/launcher/src/squarelauncher.cpp index d52b53f..1659876 100644 --- a/launcher/src/squarelauncher.cpp +++ b/launcher/src/squarelauncher.cpp @@ -185,7 +185,7 @@ QCoro::Task<> SquareLauncher::registerSession(const LoginInformation &info) const QString body = reply->readAll(); patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/game"), info.profile->gameData, this); - co_await patcher->patch(*window.mgr, body); + co_await patcher->patch(body); info.profile->readGameVersion();