+17
-20
@@ -45,14 +45,15 @@ bool isNativeLibraryFile(const QString &fileName)
|
||||
for (const QString &suffix : suffixes)
|
||||
if (fileName.endsWith(suffix, Qt::CaseInsensitive))
|
||||
return true;
|
||||
return fileName.contains(QStringLiteral(".so.")); // libfoo.so.1
|
||||
return fileName.contains(QStringLiteral(".so.")); // libfoo.so.1
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
GameLauncher::GameLauncher(QObject *parent)
|
||||
: QObject(parent)
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
bool GameLauncher::isRunning() const
|
||||
{
|
||||
@@ -100,7 +101,7 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
|
||||
QStringList classpath;
|
||||
for (const MinecraftLibrary &library : version.libraries) {
|
||||
if (library.native)
|
||||
continue; // натив-библиотеки только распаковываются
|
||||
continue; // натив-библиотеки только распаковываются
|
||||
classpath << nativeToken(libraryPath(options.gameDir, library));
|
||||
}
|
||||
classpath << nativeToken(version.clientJarPath);
|
||||
@@ -113,11 +114,11 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
|
||||
variables[QStringLiteral("auth_player_name")] = options.playerName;
|
||||
variables[QStringLiteral("auth_uuid")] = options.uuid;
|
||||
variables[QStringLiteral("auth_access_token")] = options.accessToken;
|
||||
variables[QStringLiteral("auth_session")] = QStringLiteral("token:%1:%2")
|
||||
.arg(options.accessToken, options.uuid);
|
||||
variables[QStringLiteral("auth_session")] =
|
||||
QStringLiteral("token:%1:%2").arg(options.accessToken, options.uuid);
|
||||
variables[QStringLiteral("auth_xuid")] = QStringLiteral("0");
|
||||
variables[QStringLiteral("clientid")] = options.clientToken.isEmpty() ? QStringLiteral("0")
|
||||
: options.clientToken;
|
||||
variables[QStringLiteral("clientid")] =
|
||||
options.clientToken.isEmpty() ? QStringLiteral("0") : options.clientToken;
|
||||
variables[QStringLiteral("user_type")] = options.userType;
|
||||
variables[QStringLiteral("user_properties")] = QStringLiteral("{}");
|
||||
variables[QStringLiteral("version_name")] = version.id;
|
||||
@@ -125,11 +126,11 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
|
||||
variables[QStringLiteral("game_directory")] = nativeToken(options.gameDir);
|
||||
variables[QStringLiteral("assets_root")] = nativeToken(assetsRoot);
|
||||
variables[QStringLiteral("assets_index_name")] = version.assetIndexId;
|
||||
variables[QStringLiteral("game_assets")] = nativeToken(
|
||||
legacyAssets ? assetsRoot + QStringLiteral("/virtual/legacy") : assetsRoot);
|
||||
variables[QStringLiteral("game_assets")] =
|
||||
nativeToken(legacyAssets ? assetsRoot + QStringLiteral("/virtual/legacy") : assetsRoot);
|
||||
variables[QStringLiteral("natives_directory")] = nativeToken(nativesDir);
|
||||
variables[QStringLiteral("library_directory")] = nativeToken(options.gameDir
|
||||
+ QStringLiteral("/libraries"));
|
||||
variables[QStringLiteral("library_directory")] =
|
||||
nativeToken(options.gameDir + QStringLiteral("/libraries"));
|
||||
variables[QStringLiteral("classpath")] = classpath.join(kClasspathSeparator);
|
||||
variables[QStringLiteral("classpath_separator")] = QString(kClasspathSeparator);
|
||||
variables[QStringLiteral("primary_jar")] = nativeToken(version.clientJarPath);
|
||||
@@ -173,8 +174,8 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
|
||||
}
|
||||
|
||||
// Разрешение окна: у старых версий фич-флага нет, аргументы всё равно понимаются.
|
||||
if (options.windowWidth > 0 && options.windowHeight > 0 && !version.hasCustomResolutionArgs
|
||||
&& !arguments.contains(QStringLiteral("--width"))) {
|
||||
if (options.windowWidth > 0 && options.windowHeight > 0
|
||||
&& !version.hasCustomResolutionArgs && !arguments.contains(QStringLiteral("--width"))) {
|
||||
arguments << QStringLiteral("--width") << QString::number(options.windowWidth)
|
||||
<< QStringLiteral("--height") << QString::number(options.windowHeight);
|
||||
}
|
||||
@@ -186,8 +187,7 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
|
||||
arguments << QStringLiteral("--quickPlayMultiplayer") << options.serverAddress;
|
||||
} else {
|
||||
const int colon = options.serverAddress.lastIndexOf(u':');
|
||||
const QString host = colon > 0 ? options.serverAddress.left(colon)
|
||||
: options.serverAddress;
|
||||
const QString host = colon > 0 ? options.serverAddress.left(colon) : options.serverAddress;
|
||||
const QString port = colon > 0 ? options.serverAddress.mid(colon + 1)
|
||||
: QStringLiteral("25565");
|
||||
arguments << QStringLiteral("--server") << host << QStringLiteral("--port") << port;
|
||||
@@ -247,7 +247,7 @@ bool GameLauncher::extractNatives(const LaunchOptions &options,
|
||||
const QString target = nativesDir + u'/' + fileName;
|
||||
const QByteArray data = reader.fileData(entry.filePath);
|
||||
if (QFileInfo(target).size() == data.size() && QFile::exists(target))
|
||||
continue; // уже распаковано этим же лаунчером
|
||||
continue; // уже распаковано этим же лаунчером
|
||||
|
||||
QFile file(target);
|
||||
if (!file.open(QIODevice::WriteOnly) || file.write(data) != data.size()) {
|
||||
@@ -289,10 +289,7 @@ bool GameLauncher::launch(const LaunchOptions &options,
|
||||
return false;
|
||||
|
||||
emit progress(tr("Поиск Java %1…").arg(version.javaMajor));
|
||||
const QString java = JavaLocator::select(options.gameDir,
|
||||
version.javaMajor,
|
||||
options.javaPath,
|
||||
error);
|
||||
const QString java = JavaLocator::select(options.gameDir, version.javaMajor, options.javaPath, error);
|
||||
if (java.isEmpty())
|
||||
return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user