From 4383f6d80a23a4db155bf809e6a4c15434a4e677 Mon Sep 17 00:00:00 2001 From: Tobias Date: Thu, 6 Jul 2023 20:44:35 +0200 Subject: [PATCH] Port yuzu-emu/yuzu#5229: "yuzu/main: Add basic command line arguments" (#5696) Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com> --- src/citra_qt/main.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 24b94af70..f1f8c7bb6 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -282,8 +282,46 @@ GMainWindow::GMainWindow(Core::System& system_) #endif QStringList args = QApplication::arguments(); - if (args.length() >= 2) { - BootGame(args[1]); + if (args.size() < 2) { + return; + } + + QString game_path; + for (int i = 1; i < args.size(); ++i) { + // Preserves drag/drop functionality + if (args.size() == 2 && !args[1].startsWith(QChar::fromLatin1('-'))) { + game_path = args[1]; + break; + } + + // Launch game in fullscreen mode + if (args[i] == QStringLiteral("-f")) { + ui->action_Fullscreen->setChecked(true); + continue; + } + + // Launch game in windowed mode + if (args[i] == QStringLiteral("-w")) { + ui->action_Fullscreen->setChecked(false); + continue; + } + + // Launch game at path + if (args[i] == QStringLiteral("-g")) { + if (i >= args.size() - 1) { + continue; + } + + if (args[i + 1].startsWith(QChar::fromLatin1('-'))) { + continue; + } + + game_path = args[++i]; + } + } + + if (!game_path.isEmpty()) { + BootGame(game_path); } }