mirror of
https://github.com/redstrate/Astra.git
synced 2025-04-20 19:57:45 +00:00
Modernize Profile
This commit is contained in:
parent
c50780e149
commit
8d103c33d8
6 changed files with 176 additions and 95 deletions
|
@ -56,100 +56,97 @@ public:
|
|||
enum class DalamudChannel { Stable, Staging, Net5 };
|
||||
Q_ENUM(DalamudChannel)
|
||||
|
||||
QString uuid() const;
|
||||
[[nodiscard]] QString uuid() const;
|
||||
|
||||
QString name() const;
|
||||
[[nodiscard]] QString name() const;
|
||||
void setName(const QString &name);
|
||||
|
||||
QString gamePath() const;
|
||||
[[nodiscard]] QString gamePath() const;
|
||||
void setGamePath(const QString &path);
|
||||
|
||||
QString winePath() const;
|
||||
[[nodiscard]] QString winePath() const;
|
||||
void setWinePath(const QString &path);
|
||||
|
||||
QString winePrefixPath() const;
|
||||
[[nodiscard]] QString winePrefixPath() const;
|
||||
void setWinePrefixPath(const QString &path);
|
||||
|
||||
bool watchdogEnabled() const;
|
||||
[[nodiscard]] bool watchdogEnabled() const;
|
||||
void setWatchdogEnabled(bool value);
|
||||
|
||||
WineType wineType() const;
|
||||
[[nodiscard]] WineType wineType() const;
|
||||
void setWineType(WineType type);
|
||||
|
||||
bool esyncEnabled() const;
|
||||
[[nodiscard]] bool esyncEnabled() const;
|
||||
void setESyncEnabled(bool value);
|
||||
|
||||
bool gamescopeEnabled() const;
|
||||
[[nodiscard]] bool gamescopeEnabled() const;
|
||||
void setGamescopeEnabled(bool value);
|
||||
|
||||
bool gamemodeEnabled() const;
|
||||
[[nodiscard]] bool gamemodeEnabled() const;
|
||||
void setGamemodeEnabled(bool value);
|
||||
|
||||
bool directx9Enabled() const;
|
||||
[[nodiscard]] bool directx9Enabled() const;
|
||||
void setDirectX9Enabled(bool value);
|
||||
|
||||
bool gamescopeFullscreen() const;
|
||||
[[nodiscard]] bool gamescopeFullscreen() const;
|
||||
void setGamescopeFullscreen(bool value);
|
||||
|
||||
bool gamescopeBorderless() const;
|
||||
[[nodiscard]] bool gamescopeBorderless() const;
|
||||
void setGamescopeBorderless(bool value);
|
||||
|
||||
int gamescopeWidth() const;
|
||||
[[nodiscard]] int gamescopeWidth() const;
|
||||
void setGamescopeWidth(int value);
|
||||
|
||||
int gamescopeHeight() const;
|
||||
[[nodiscard]] int gamescopeHeight() const;
|
||||
void setGamescopeHeight(int value);
|
||||
|
||||
int gamescopeRefreshRate() const;
|
||||
[[nodiscard]] int gamescopeRefreshRate() const;
|
||||
void setGamescopeRefreshRate(int value);
|
||||
|
||||
bool dalamudEnabled() const;
|
||||
[[nodiscard]] bool dalamudEnabled() const;
|
||||
void setDalamudEnabled(bool value);
|
||||
|
||||
bool dalamudOptOut() const;
|
||||
[[nodiscard]] bool dalamudOptOut() const;
|
||||
void setDalamudOptOut(bool value);
|
||||
|
||||
DalamudChannel dalamudChannel() const;
|
||||
[[nodiscard]] DalamudChannel dalamudChannel() const;
|
||||
void setDalamudChannel(DalamudChannel channel);
|
||||
|
||||
bool argumentsEncrypted() const;
|
||||
[[nodiscard]] bool argumentsEncrypted() const;
|
||||
void setArgumentsEncrypted(bool value);
|
||||
|
||||
Account *account() const;
|
||||
QString accountUuid() const;
|
||||
[[nodiscard]] Account *account() const;
|
||||
[[nodiscard]] QString accountUuid() const;
|
||||
void setAccount(Account *account);
|
||||
|
||||
void readGameData();
|
||||
void readGameVersion();
|
||||
void readWineInfo();
|
||||
|
||||
QVector<QString> expansionNames;
|
||||
[[nodiscard]] QString expansionVersionText() const;
|
||||
[[nodiscard]] QString dalamudVersionText() const;
|
||||
[[nodiscard]] QString wineVersionText() const;
|
||||
|
||||
BootData *bootData;
|
||||
GameData *gameData;
|
||||
[[nodiscard]] QString dalamudChannelName() const;
|
||||
|
||||
physis_Repositories repositories = {};
|
||||
const char *bootVersion = nullptr;
|
||||
[[nodiscard]] bool isGameInstalled() const;
|
||||
[[nodiscard]] bool isWineInstalled() const;
|
||||
|
||||
QString dalamudVersion;
|
||||
int dalamudAssetVersion = -1;
|
||||
QString runtimeVersion;
|
||||
[[nodiscard]] QString bootVersion() const;
|
||||
[[nodiscard]] QString baseGameVersion() const;
|
||||
[[nodiscard]] int numInstalledExpansions() const;
|
||||
[[nodiscard]] QString expansionVersion(int index) const;
|
||||
|
||||
QString expansionVersionText() const;
|
||||
QString dalamudVersionText() const;
|
||||
QString wineVersionText() const;
|
||||
[[nodiscard]] int dalamudAssetVersion() const;
|
||||
void setDalamudAssetVersion(int version);
|
||||
|
||||
[[nodiscard]] bool isGameInstalled() const
|
||||
{
|
||||
return repositories.repositories_count > 0;
|
||||
}
|
||||
[[nodiscard]] QString runtimeVersion() const;
|
||||
|
||||
[[nodiscard]] bool isWineInstalled() const
|
||||
{
|
||||
return !m_wineVersion.isEmpty();
|
||||
}
|
||||
[[nodiscard]] QString dalamudVersion() const;
|
||||
void setDalamudVersion(const QString &version);
|
||||
|
||||
QString dalamudChannelName() const;
|
||||
BootData *bootData();
|
||||
GameData *gameData();
|
||||
|
||||
Q_SIGNALS:
|
||||
void gameInstallChanged();
|
||||
|
@ -180,5 +177,18 @@ private:
|
|||
QString m_wineVersion;
|
||||
ProfileConfig *m_config = nullptr;
|
||||
Account *m_account = nullptr;
|
||||
|
||||
QVector<QString> m_expansionNames;
|
||||
|
||||
BootData *m_bootData = nullptr;
|
||||
GameData *m_gameData = nullptr;
|
||||
|
||||
physis_Repositories m_repositories = {};
|
||||
const char *m_bootVersion = nullptr;
|
||||
|
||||
QString m_dalamudVersion;
|
||||
int m_dalamudAssetVersion = -1;
|
||||
QString m_runtimeVersion;
|
||||
|
||||
LauncherCore &m_launcher;
|
||||
};
|
|
@ -71,7 +71,7 @@ void AssetUpdater::update()
|
|||
QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());
|
||||
|
||||
qInfo() << "Dalamud asset remote version" << doc.object()["Version"].toInt();
|
||||
qInfo() << "Dalamud asset local version" << m_profile.dalamudAssetVersion;
|
||||
qInfo() << "Dalamud asset local version" << m_profile.dalamudAssetVersion();
|
||||
|
||||
remoteDalamudAssetVersion = doc.object()["Version"].toInt();
|
||||
|
||||
|
@ -162,7 +162,7 @@ void AssetUpdater::checkIfDalamudAssetsDone()
|
|||
if (dalamudAssetNeededFilenames.empty()) {
|
||||
qInfo() << "Finished downloading Dalamud assets.";
|
||||
|
||||
m_profile.dalamudAssetVersion = remoteDalamudAssetVersion;
|
||||
m_profile.setDalamudAssetVersion(remoteDalamudAssetVersion);
|
||||
|
||||
QFile file(dalamudAssetDir.absoluteFilePath("asset.ver"));
|
||||
file.open(QIODevice::WriteOnly | QIODevice::Text);
|
||||
|
@ -196,7 +196,7 @@ void AssetUpdater::checkIfCheckingIsDone()
|
|||
Q_EMIT launcher.stageChanged("Starting Dalamud update...");
|
||||
|
||||
// dalamud injector / net runtime
|
||||
if (m_profile.runtimeVersion != remoteRuntimeVersion) {
|
||||
if (m_profile.runtimeVersion() != remoteRuntimeVersion) {
|
||||
needsRuntimeInstall = true;
|
||||
|
||||
// core
|
||||
|
@ -248,7 +248,7 @@ void AssetUpdater::checkIfCheckingIsDone()
|
|||
checkIfFinished();
|
||||
}
|
||||
|
||||
if (remoteDalamudVersion != m_profile.dalamudVersion) {
|
||||
if (remoteDalamudVersion != m_profile.dalamudVersion()) {
|
||||
qInfo() << "Downloading Dalamud...";
|
||||
|
||||
needsDalamudInstall = true;
|
||||
|
@ -268,7 +268,7 @@ void AssetUpdater::checkIfCheckingIsDone()
|
|||
|
||||
doneDownloadingDalamud = true;
|
||||
|
||||
m_profile.dalamudVersion = remoteDalamudVersion;
|
||||
m_profile.setDalamudVersion(remoteDalamudVersion);
|
||||
|
||||
checkIfFinished();
|
||||
});
|
||||
|
@ -282,7 +282,7 @@ void AssetUpdater::checkIfCheckingIsDone()
|
|||
}
|
||||
|
||||
// dalamud assets
|
||||
if (remoteDalamudAssetVersion != m_profile.dalamudAssetVersion) {
|
||||
if (remoteDalamudAssetVersion != m_profile.dalamudAssetVersion()) {
|
||||
qInfo() << "Dalamud assets out of date.";
|
||||
|
||||
Q_EMIT launcher.stageChanged("Updating Dalamud assets...");
|
||||
|
|
|
@ -182,7 +182,7 @@ QString LauncherCore::getGameArgs(const Profile &profile, const LoginAuth &auth)
|
|||
gameArgs.push_back({QStringLiteral("DEV.TestSID"), auth.SID});
|
||||
gameArgs.push_back({QStringLiteral("SYS.Region"), QString::number(auth.region)});
|
||||
gameArgs.push_back({QStringLiteral("language"), QString::number(profile.account()->language())});
|
||||
gameArgs.push_back({QStringLiteral("ver"), profile.repositories.repositories[0].version});
|
||||
gameArgs.push_back({QStringLiteral("ver"), profile.baseGameVersion()});
|
||||
gameArgs.push_back({QStringLiteral("UserPath"), Utility::toWindowsPath(profile.account()->getConfigDir().absolutePath())});
|
||||
|
||||
// FIXME: this should belong somewhere else...
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "profile.h"
|
||||
|
||||
#include <KLocalizedString>
|
||||
#include <QFile>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
@ -23,55 +24,55 @@ Profile::Profile(LauncherCore &launcher, const QString &key, QObject *parent)
|
|||
|
||||
const QDir dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||
|
||||
const QDir dalamudDir = dataDir.absoluteFilePath("dalamud");
|
||||
const QDir dalamudDir = dataDir.absoluteFilePath(QStringLiteral("dalamud"));
|
||||
|
||||
if (dalamudDir.exists()) {
|
||||
const QDir dalamudInstallDir = dalamudDir.absoluteFilePath(dalamudChannelName());
|
||||
const QDir dalamudAssetsDir = dalamudDir.absoluteFilePath("assets");
|
||||
const QDir dalamudRuntimeDir = dalamudDir.absoluteFilePath("runtime");
|
||||
const QDir dalamudAssetsDir = dalamudDir.absoluteFilePath(QStringLiteral("assets"));
|
||||
const QDir dalamudRuntimeDir = dalamudDir.absoluteFilePath(QStringLiteral("runtime"));
|
||||
|
||||
const QString dalamudDepsJson = dalamudInstallDir.absoluteFilePath("Dalamud.deps.json");
|
||||
const QString dalamudDepsJson = dalamudInstallDir.absoluteFilePath(QStringLiteral("Dalamud.deps.json"));
|
||||
if (QFile::exists(dalamudDepsJson)) {
|
||||
QFile depsJson(dalamudDepsJson);
|
||||
depsJson.open(QFile::ReadOnly);
|
||||
QJsonDocument doc = QJsonDocument::fromJson(depsJson.readAll());
|
||||
|
||||
QString versionString;
|
||||
for (auto target : doc["targets"].toObject().keys()) {
|
||||
if (target.contains(".NETCoreApp")) {
|
||||
versionString = doc["targets"].toObject()[target].toObject().keys().filter("Dalamud/")[0];
|
||||
for (const auto &target : doc[QLatin1String("targets")].toObject().keys()) {
|
||||
if (target.contains(QLatin1String(".NETCoreApp"))) {
|
||||
versionString = doc[QLatin1String("targets")].toObject()[target].toObject().keys().filter(QStringLiteral("Dalamud/"))[0];
|
||||
}
|
||||
}
|
||||
|
||||
dalamudVersion = versionString.remove("Dalamud/");
|
||||
m_dalamudVersion = versionString.remove(QLatin1String("Dalamud/"));
|
||||
}
|
||||
|
||||
const QString dalamudAssetsVer = dalamudAssetsDir.absoluteFilePath("asset.ver");
|
||||
const QString dalamudAssetsVer = dalamudAssetsDir.absoluteFilePath(QStringLiteral("asset.ver"));
|
||||
if (QFile::exists(dalamudAssetsVer)) {
|
||||
QFile assetJson(dalamudAssetsVer);
|
||||
assetJson.open(QFile::ReadOnly | QFile::Text);
|
||||
|
||||
dalamudAssetVersion = QString(assetJson.readAll()).toInt();
|
||||
m_dalamudAssetVersion = QString(assetJson.readAll()).toInt();
|
||||
}
|
||||
|
||||
const QString dalamudRuntimeVer = dalamudRuntimeDir.absoluteFilePath("runtime.ver");
|
||||
const QString dalamudRuntimeVer = dalamudRuntimeDir.absoluteFilePath(QStringLiteral("runtime.ver"));
|
||||
if (QFile::exists(dalamudRuntimeVer)) {
|
||||
QFile runtimeVer(dalamudRuntimeVer);
|
||||
runtimeVer.open(QFile::ReadOnly | QFile::Text);
|
||||
|
||||
runtimeVersion = QString(runtimeVer.readAll());
|
||||
m_runtimeVersion = QString(runtimeVer.readAll());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Profile::readGameData()
|
||||
{
|
||||
physis_EXH *exh = physis_gamedata_read_excel_sheet_header(gameData, "ExVersion");
|
||||
physis_EXH *exh = physis_gamedata_read_excel_sheet_header(m_gameData, "ExVersion");
|
||||
if (exh != nullptr) {
|
||||
physis_EXD exd = physis_gamedata_read_excel_sheet(gameData, "ExVersion", exh, Language::English, 0);
|
||||
physis_EXD exd = physis_gamedata_read_excel_sheet(m_gameData, "ExVersion", exh, Language::English, 0);
|
||||
|
||||
for (unsigned int i = 0; i < exd.row_count; i++) {
|
||||
expansionNames.push_back(exd.row_data[i].column_data[0].string._0);
|
||||
m_expansionNames.push_back(exd.row_data[i].column_data[0].string._0);
|
||||
}
|
||||
|
||||
physis_gamedata_free_sheet(exd);
|
||||
|
@ -103,7 +104,7 @@ void Profile::readWineInfo()
|
|||
#if defined(Q_OS_LINUX)
|
||||
switch (wineType()) {
|
||||
case WineType::System: // system wine (should be in $PATH)
|
||||
setWinePath("wine");
|
||||
setWinePath(QStringLiteral("wine"));
|
||||
break;
|
||||
case WineType::Custom: // custom pth
|
||||
default:
|
||||
|
@ -117,10 +118,10 @@ void Profile::readWineInfo()
|
|||
|
||||
connect(wineProcess, &QProcess::readyRead, this, [wineProcess, this] {
|
||||
m_wineVersion = wineProcess->readAllStandardOutput().trimmed();
|
||||
Q_EMIT wineVersionText();
|
||||
Q_EMIT wineChanged();
|
||||
});
|
||||
|
||||
m_launcher.launchExecutable(*this, wineProcess, {"--version"}, false, false);
|
||||
m_launcher.launchExecutable(*this, wineProcess, {QStringLiteral("--version")}, false, false);
|
||||
|
||||
wineProcess->waitForFinished();
|
||||
#endif
|
||||
|
@ -416,15 +417,15 @@ void Profile::readGameVersion()
|
|||
return;
|
||||
}
|
||||
|
||||
gameData = physis_gamedata_initialize((gamePath() + "/game").toStdString().c_str());
|
||||
bootData = physis_bootdata_initialize((gamePath() + "/boot").toStdString().c_str());
|
||||
m_gameData = physis_gamedata_initialize((gamePath() + QStringLiteral("/game")).toStdString().c_str());
|
||||
m_bootData = physis_bootdata_initialize((gamePath() + QStringLiteral("/boot")).toStdString().c_str());
|
||||
|
||||
if (bootData != nullptr) {
|
||||
bootVersion = physis_bootdata_get_version(bootData);
|
||||
if (m_bootData != nullptr) {
|
||||
m_bootVersion = physis_bootdata_get_version(m_bootData);
|
||||
}
|
||||
|
||||
if (gameData != nullptr) {
|
||||
repositories = physis_gamedata_get_repositories(gameData);
|
||||
if (m_gameData != nullptr) {
|
||||
m_repositories = physis_gamedata_get_repositories(m_gameData);
|
||||
readGameData();
|
||||
}
|
||||
|
||||
|
@ -439,20 +440,20 @@ QString Profile::accountUuid() const
|
|||
QString Profile::expansionVersionText() const
|
||||
{
|
||||
if (!isGameInstalled()) {
|
||||
return "No game installed.";
|
||||
return i18n("No game installed.");
|
||||
} else {
|
||||
QString expacString;
|
||||
|
||||
expacString += "Boot";
|
||||
expacString += QString(" (%1)").arg(bootVersion);
|
||||
expacString += QStringLiteral("Boot");
|
||||
expacString += QStringLiteral(" (%1)").arg(m_bootVersion);
|
||||
|
||||
for (unsigned int i = 0; i < repositories.repositories_count; i++) {
|
||||
QString expansionName = "Unknown Expansion";
|
||||
if (i < static_cast<unsigned int>(expansionNames.size())) {
|
||||
expansionName = expansionNames[i];
|
||||
for (unsigned int i = 0; i < m_repositories.repositories_count; i++) {
|
||||
QString expansionName = i18n("Unknown Expansion");
|
||||
if (i < static_cast<unsigned int>(m_expansionNames.size())) {
|
||||
expansionName = m_expansionNames[i];
|
||||
}
|
||||
|
||||
expacString += QString("\n%1 (%2)").arg(expansionName, repositories.repositories[i].version);
|
||||
expacString += QStringLiteral("\n%1 (%2)").arg(expansionName, m_repositories.repositories[i].version);
|
||||
}
|
||||
|
||||
return expacString;
|
||||
|
@ -462,14 +463,14 @@ QString Profile::expansionVersionText() const
|
|||
QString Profile::dalamudVersionText() const
|
||||
{
|
||||
QString text;
|
||||
if (dalamudVersion.isEmpty()) {
|
||||
text += "Dalamud is not installed.";
|
||||
if (m_dalamudVersion.isEmpty()) {
|
||||
text += i18n("Dalamud is not installed.");
|
||||
} else {
|
||||
text += QStringLiteral("Dalamud (%1)").arg(dalamudVersion);
|
||||
text += QStringLiteral("Dalamud (%1)").arg(m_dalamudVersion);
|
||||
}
|
||||
|
||||
if (dalamudAssetVersion != -1) {
|
||||
text += QStringLiteral("\nAssets (%1)").arg(QString::number(dalamudAssetVersion));
|
||||
if (m_dalamudAssetVersion != -1) {
|
||||
text += QStringLiteral("\nAssets (%1)").arg(QString::number(m_dalamudAssetVersion));
|
||||
}
|
||||
|
||||
return text;
|
||||
|
@ -483,11 +484,11 @@ QString Profile::uuid() const
|
|||
QString Profile::wineVersionText() const
|
||||
{
|
||||
if (m_launcher.isSteam()) {
|
||||
return "Wine is being managed by Steam.";
|
||||
return i18n("Wine is being managed by Steam.");
|
||||
}
|
||||
|
||||
if (!isWineInstalled()) {
|
||||
return "Wine is not installed.";
|
||||
return i18n("Wine is not installed.");
|
||||
} else {
|
||||
return m_wineVersion;
|
||||
}
|
||||
|
@ -506,3 +507,71 @@ QString Profile::dalamudChannelName() const
|
|||
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
[[nodiscard]] bool Profile::isGameInstalled() const
|
||||
{
|
||||
return m_repositories.repositories_count > 0;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool Profile::isWineInstalled() const
|
||||
{
|
||||
return !m_wineVersion.isEmpty();
|
||||
}
|
||||
|
||||
QString Profile::bootVersion() const
|
||||
{
|
||||
return m_bootVersion;
|
||||
}
|
||||
|
||||
QString Profile::baseGameVersion() const
|
||||
{
|
||||
Q_ASSERT(m_repositories.repositories_count > 1);
|
||||
return m_repositories.repositories[0].version;
|
||||
}
|
||||
|
||||
int Profile::numInstalledExpansions() const
|
||||
{
|
||||
Q_ASSERT(m_repositories.repositories_count > 1);
|
||||
return m_repositories.repositories_count - 1;
|
||||
}
|
||||
|
||||
QString Profile::expansionVersion(const int index) const
|
||||
{
|
||||
Q_ASSERT(index < numInstalledExpansions());
|
||||
return m_repositories.repositories[index + 1].version;
|
||||
}
|
||||
|
||||
int Profile::dalamudAssetVersion() const
|
||||
{
|
||||
return m_dalamudAssetVersion;
|
||||
}
|
||||
|
||||
void Profile::setDalamudAssetVersion(int version)
|
||||
{
|
||||
m_dalamudAssetVersion = version;
|
||||
}
|
||||
|
||||
QString Profile::runtimeVersion() const
|
||||
{
|
||||
return m_runtimeVersion;
|
||||
}
|
||||
|
||||
QString Profile::dalamudVersion() const
|
||||
{
|
||||
return m_dalamudVersion;
|
||||
}
|
||||
|
||||
void Profile::setDalamudVersion(const QString &version)
|
||||
{
|
||||
m_dalamudVersion = version;
|
||||
}
|
||||
|
||||
BootData *Profile::bootData()
|
||||
{
|
||||
return m_bootData;
|
||||
}
|
||||
|
||||
GameData *Profile::gameData()
|
||||
{
|
||||
return m_gameData;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ QCoro::Task<> SquareBoot::bootCheck(const LoginInformation &info)
|
|||
QUrl url;
|
||||
url.setScheme(QStringLiteral("http"));
|
||||
url.setHost(QStringLiteral("patch-bootver.%1").arg(window.squareEnixServer()));
|
||||
url.setPath(QStringLiteral("/http/win32/ffxivneo_release_boot/%1").arg(info.profile->bootVersion));
|
||||
url.setPath(QStringLiteral("/http/win32/ffxivneo_release_boot/%1").arg(info.profile->bootVersion()));
|
||||
url.setQuery(query);
|
||||
|
||||
auto request = QNetworkRequest(url);
|
||||
|
@ -47,7 +47,7 @@ QCoro::Task<> SquareBoot::bootCheck(const LoginInformation &info)
|
|||
const auto reply = window.mgr->get(request);
|
||||
co_await reply;
|
||||
|
||||
patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/boot"), *info.profile->bootData, this);
|
||||
patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/boot"), *info.profile->bootData(), this);
|
||||
co_await patcher->patch(reply->readAll());
|
||||
|
||||
// update game version information
|
||||
|
|
|
@ -160,7 +160,7 @@ QCoro::Task<> SquareLauncher::registerSession(const LoginInformation &info)
|
|||
QUrl url;
|
||||
url.setScheme(QStringLiteral("https"));
|
||||
url.setHost(QStringLiteral("patch-gamever.%1").arg(window.squareEnixServer()));
|
||||
url.setPath(QStringLiteral("/http/win32/ffxivneo_release_game/%1/%2").arg(info.profile->repositories.repositories[0].version, SID));
|
||||
url.setPath(QStringLiteral("/http/win32/ffxivneo_release_game/%1/%2").arg(info.profile->baseGameVersion(), SID));
|
||||
|
||||
auto request = QNetworkRequest(url);
|
||||
window.setSSL(request);
|
||||
|
@ -168,15 +168,17 @@ QCoro::Task<> SquareLauncher::registerSession(const LoginInformation &info)
|
|||
request.setRawHeader(QByteArrayLiteral("User-Agent"), QByteArrayLiteral("FFXIV PATCH CLIENT"));
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral("application/x-www-form-urlencoded"));
|
||||
|
||||
QString report = QStringLiteral("%1=%2").arg(info.profile->bootVersion, getBootHash(info));
|
||||
QString report = QStringLiteral("%1=%2").arg(info.profile->bootVersion(), getBootHash(info));
|
||||
for (int i = 1; i < auth.maxExpansion + 1; i++) {
|
||||
if (i < static_cast<int>(info.profile->repositories.repositories_count)) {
|
||||
report += QStringLiteral("\nex%1\t%2").arg(QString::number(i), info.profile->repositories.repositories[i].version);
|
||||
if (i < static_cast<int>(info.profile->numInstalledExpansions())) {
|
||||
report += QStringLiteral("\nex%1\t%2").arg(QString::number(i), info.profile->expansionVersion(i));
|
||||
} else {
|
||||
report += QStringLiteral("\nex%1\t2012.01.01.0000.0000").arg(QString::number(i));
|
||||
}
|
||||
}
|
||||
|
||||
qInfo() << report;
|
||||
|
||||
const auto reply = window.mgr->post(request, report.toUtf8());
|
||||
co_await reply;
|
||||
|
||||
|
@ -184,7 +186,7 @@ QCoro::Task<> SquareLauncher::registerSession(const LoginInformation &info)
|
|||
if (reply->rawHeaderList().contains(QByteArrayLiteral("X-Patch-Unique-Id"))) {
|
||||
const QString body = reply->readAll();
|
||||
|
||||
patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/game"), *info.profile->gameData, this);
|
||||
patcher = new Patcher(window, info.profile->gamePath() + QStringLiteral("/game"), *info.profile->gameData(), this);
|
||||
co_await patcher->patch(body);
|
||||
|
||||
info.profile->readGameVersion();
|
||||
|
|
Loading…
Add table
Reference in a new issue