Merge pull request #1396 from DarkLordZach/packed-updates

loader: Add support for packed updates
This commit is contained in:
bunnei
2018-10-06 23:58:24 -04:00
committed by GitHub
16 changed files with 143 additions and 21 deletions

View File

@ -57,16 +57,25 @@ QString FormatGameName(const std::string& physical_name) {
return physical_name_as_qstring;
}
QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager, bool updatable = true) {
QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager,
Loader::AppLoader& loader, bool updatable = true) {
QString out;
for (const auto& kv : patch_manager.GetPatchVersionNames()) {
FileSys::VirtualFile update_raw;
loader.ReadUpdateRaw(update_raw);
for (const auto& kv : patch_manager.GetPatchVersionNames(update_raw)) {
if (!updatable && kv.first == "Update")
continue;
if (kv.second.empty()) {
out.append(fmt::format("{}\n", kv.first).c_str());
} else {
out.append(fmt::format("{} ({})\n", kv.first, kv.second).c_str());
auto ver = kv.second;
// Display container name for packed updates
if (ver == "PACKED" && kv.first == "Update")
ver = Loader::GetFileTypeString(loader.GetFileType());
out.append(fmt::format("{} ({})\n", kv.first, ver).c_str());
}
}
@ -116,7 +125,7 @@ void GameListWorker::AddInstalledTitlesToGameList() {
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),
program_id),
new GameListItemCompat(compatibility),
new GameListItem(FormatPatchNameVersions(patch)),
new GameListItem(FormatPatchNameVersions(patch, *loader)),
new GameListItem(
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),
new GameListItemSize(file->GetSize()),
@ -206,7 +215,8 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),
program_id),
new GameListItemCompat(compatibility),
new GameListItem(FormatPatchNameVersions(patch, loader->IsRomFSUpdatable())),
new GameListItem(
FormatPatchNameVersions(patch, *loader, loader->IsRomFSUpdatable())),
new GameListItem(
QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),
new GameListItemSize(FileUtil::GetSize(physical_name)),