Compare commits

...

5 Commits

Author SHA1 Message Date
Frederic Laing
00a302eb1f fix hexadecimal title id conversion error 2020-06-07 22:10:35 +02:00
Frederic Laing
26ddbc40d9 Fix clang format 2020-06-07 21:41:51 +02:00
Frederic L
a2ce6b06f2 Represent title ID in hexadecimal
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2020-06-07 21:33:37 +02:00
Frederic Laing
8e566646d4 Improve DLC handling 2020-06-07 21:30:34 +02:00
Frederic Laing
956ba21e6c Add more information about the running game 2020-06-07 20:02:12 +02:00
2 changed files with 58 additions and 14 deletions

View File

@@ -979,6 +979,42 @@ bool GMainWindow::LoadROM(const QString& filename) {
return true;
}
QString GMainWindow::LoadDLCsName(u64 title_id) {
const FileSys::PatchManager patch_manager(title_id);
std::string dlc = "";
std::size_t dlc_count = 0;
for (const auto& kv : patch_manager.GetPatchVersionNames(nullptr)) {
if (kv.first == "DLC" && !kv.second.empty()) {
// bound the string size, in case a game has a lot of DLCs installed
dlc_count++;
if (dlc_count > 5) {
continue;
} else if (dlc_count == 5) {
dlc.append(", ... ");
continue;
}
if (!dlc.empty()) {
dlc.append(", ");
}
dlc.append(kv.second);
}
}
if (dlc.empty()) {
dlc = "No DLC";
} else {
dlc = "DLC: " + dlc;
}
if (dlc_count > 5) {
dlc.append(" (" + std::to_string(dlc_count) + ")");
}
return QString::fromStdString(dlc);
}
void GMainWindow::SelectAndSetCurrentUser() {
QtProfileSelectionDialog dialog(this);
dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint |
@@ -1035,19 +1071,23 @@ void GMainWindow::BootGame(const QString& filename) {
}
const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
const QString dlc = LoadDLCsName(title_id);
std::string title_name;
const auto res = Core::System::GetInstance().GetGameName(title_name);
if (res != Loader::ResultStatus::Success) {
const auto metadata = FileSys::PatchManager(title_id).GetControlMetadata();
if (metadata.first != nullptr)
title_name = metadata.first->GetApplicationName();
QString title_version;
const auto res_name = Core::System::GetInstance().GetGameName(title_name);
const auto metadata = FileSys::PatchManager(title_id).GetControlMetadata();
if (metadata.first != nullptr) {
title_version = QString::fromStdString(metadata.first->GetVersionString());
if (title_name.empty())
title_name = FileUtil::GetFilename(filename.toStdString());
if (res_name != Loader::ResultStatus::Success) {
title_name = metadata.first->GetApplicationName();
if (title_name.empty()) {
title_name = FileUtil::GetFilename(filename.toStdString());
}
}
}
LOG_INFO(Frontend, "Booting game: {:016X} | {}", title_id, title_name);
UpdateWindowTitle(QString::fromStdString(title_name));
UpdateWindowTitle(QString::fromStdString(title_name), title_id, title_version, dlc);
loading_screen->Prepare(Core::System::GetInstance().GetAppLoader());
loading_screen->show();
@@ -1995,7 +2035,8 @@ void GMainWindow::OnCaptureScreenshot() {
OnStartGame();
}
void GMainWindow::UpdateWindowTitle(const QString& title_name) {
void GMainWindow::UpdateWindowTitle(const QString& title_name, u64 title_id,
const QString& title_version, const QString& dlc) {
const auto full_name = std::string(Common::g_build_fullname);
const auto branch_name = std::string(Common::g_scm_branch);
const auto description = std::string(Common::g_scm_desc);
@@ -2011,9 +2052,10 @@ void GMainWindow::UpdateWindowTitle(const QString& title_name) {
std::string{}, date, build_id)));
} else {
const auto fmt = std::string(Common::g_title_bar_format_running);
setWindowTitle(QString::fromStdString(
fmt::format(fmt.empty() ? "yuzu {0}| {3} | {1}-{2}" : fmt, full_name, branch_name,
description, title_name.toStdString(), date, build_id)));
setWindowTitle(QString::fromStdString(fmt::format(
fmt.empty() ? "yuzu {0}| {3} | {4} | {5} | {6} | {1}-{2}" : fmt, full_name, branch_name,
description, title_name.toStdString(), fmt::format("{:016X}", title_id),
title_version.toStdString(), dlc.toStdString(), date, build_id)));
}
}

View File

@@ -135,6 +135,7 @@ private:
void AllowOSSleep();
bool LoadROM(const QString& filename);
QString LoadDLCsName(u64 title_id);
void BootGame(const QString& filename);
void ShutdownGame();
@@ -215,7 +216,8 @@ private slots:
private:
std::optional<u64> SelectRomFSDumpTarget(const FileSys::ContentProvider&, u64 program_id);
void UpdateWindowTitle(const QString& title_name = {});
void UpdateWindowTitle(const QString& title_name = {}, u64 title_id = {},
const QString& title_version = {}, const QString& dlc = {});
void UpdateStatusBar();
void HideMouseCursor();
void ShowMouseCursor();