Browse Source
Merge pull request #1282 from lioncash/compat
yuzu: Move compatibility list specifics to their own source files
pull/15/merge
bunnei
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with
56 additions and
33 deletions
-
src/yuzu/CMakeLists.txt
-
src/yuzu/compatibility_list.cpp
-
src/yuzu/compatibility_list.h
-
src/yuzu/game_list.cpp
-
src/yuzu/game_list.h
-
src/yuzu/game_list_p.h
-
src/yuzu/game_list_worker.cpp
-
src/yuzu/game_list_worker.h
-
src/yuzu/main.cpp
-
src/yuzu/main.h
|
|
|
@ -9,6 +9,8 @@ add_executable(yuzu |
|
|
|
about_dialog.h |
|
|
|
bootmanager.cpp |
|
|
|
bootmanager.h |
|
|
|
compatibility_list.cpp |
|
|
|
compatibility_list.h |
|
|
|
configuration/config.cpp |
|
|
|
configuration/config.h |
|
|
|
configuration/configure_audio.cpp |
|
|
|
|
|
|
|
@ -0,0 +1,18 @@ |
|
|
|
// Copyright 2018 yuzu Emulator Project
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
#include <fmt/format.h>
|
|
|
|
|
|
|
|
#include "yuzu/compatibility_list.h"
|
|
|
|
|
|
|
|
CompatibilityList::const_iterator FindMatchingCompatibilityEntry( |
|
|
|
const CompatibilityList& compatibility_list, u64 program_id) { |
|
|
|
return std::find_if(compatibility_list.begin(), compatibility_list.end(), |
|
|
|
[program_id](const auto& element) { |
|
|
|
std::string pid = fmt::format("{:016X}", program_id); |
|
|
|
return element.first == pid; |
|
|
|
}); |
|
|
|
} |
|
|
|
@ -0,0 +1,17 @@ |
|
|
|
// Copyright 2018 yuzu Emulator Project |
|
|
|
// Licensed under GPLv2 or any later version |
|
|
|
// Refer to the license.txt file included. |
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
#include <string> |
|
|
|
#include <unordered_map> |
|
|
|
|
|
|
|
#include <QString> |
|
|
|
|
|
|
|
#include "common/common_types.h" |
|
|
|
|
|
|
|
using CompatibilityList = std::unordered_map<std::string, std::pair<QString, QString>>; |
|
|
|
|
|
|
|
CompatibilityList::const_iterator FindMatchingCompatibilityEntry( |
|
|
|
const CompatibilityList& compatibility_list, u64 program_id); |
|
|
|
@ -19,6 +19,7 @@ |
|
|
|
#include "common/file_util.h"
|
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "core/file_sys/patch_manager.h"
|
|
|
|
#include "yuzu/compatibility_list.h"
|
|
|
|
#include "yuzu/game_list.h"
|
|
|
|
#include "yuzu/game_list_p.h"
|
|
|
|
#include "yuzu/game_list_worker.h"
|
|
|
|
|
|
|
|
@ -4,8 +4,6 @@ |
|
|
|
|
|
|
|
#pragma once |
|
|
|
|
|
|
|
#include <unordered_map> |
|
|
|
|
|
|
|
#include <QFileSystemWatcher> |
|
|
|
#include <QHBoxLayout> |
|
|
|
#include <QLabel> |
|
|
|
@ -21,6 +19,7 @@ |
|
|
|
#include <QWidget> |
|
|
|
|
|
|
|
#include "common/common_types.h" |
|
|
|
#include "yuzu/compatibility_list.h" |
|
|
|
|
|
|
|
class GameListWorker; |
|
|
|
class GMainWindow; |
|
|
|
@ -90,9 +89,8 @@ signals: |
|
|
|
void GameChosen(QString game_path); |
|
|
|
void ShouldCancelWorker(); |
|
|
|
void OpenFolderRequested(u64 program_id, GameListOpenTarget target); |
|
|
|
void NavigateToGamedbEntryRequested( |
|
|
|
u64 program_id, |
|
|
|
std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list); |
|
|
|
void NavigateToGamedbEntryRequested(u64 program_id, |
|
|
|
const CompatibilityList& compatibility_list); |
|
|
|
|
|
|
|
private slots: |
|
|
|
void onTextChanged(const QString& newText); |
|
|
|
@ -114,7 +112,7 @@ private: |
|
|
|
QStandardItemModel* item_model = nullptr; |
|
|
|
GameListWorker* current_worker = nullptr; |
|
|
|
QFileSystemWatcher* watcher = nullptr; |
|
|
|
std::unordered_map<std::string, std::pair<QString, QString>> compatibility_list; |
|
|
|
CompatibilityList compatibility_list; |
|
|
|
}; |
|
|
|
|
|
|
|
Q_DECLARE_METATYPE(GameListOpenTarget); |
|
|
|
@ -176,14 +176,3 @@ public: |
|
|
|
return data(SizeRole).toULongLong() < other.data(SizeRole).toULongLong(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
inline auto FindMatchingCompatibilityEntry( |
|
|
|
const std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list, |
|
|
|
u64 program_id) { |
|
|
|
return std::find_if( |
|
|
|
compatibility_list.begin(), compatibility_list.end(), |
|
|
|
[program_id](const std::pair<std::string, std::pair<QString, QString>>& element) { |
|
|
|
std::string pid = fmt::format("{:016X}", program_id); |
|
|
|
return element.first == pid; |
|
|
|
}); |
|
|
|
} |
|
|
|
@ -20,6 +20,7 @@ |
|
|
|
#include "core/file_sys/registered_cache.h"
|
|
|
|
#include "core/hle/service/filesystem/filesystem.h"
|
|
|
|
#include "core/loader/loader.h"
|
|
|
|
#include "yuzu/compatibility_list.h"
|
|
|
|
#include "yuzu/game_list.h"
|
|
|
|
#include "yuzu/game_list_p.h"
|
|
|
|
#include "yuzu/game_list_worker.h"
|
|
|
|
@ -75,9 +76,8 @@ QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager, bool |
|
|
|
} |
|
|
|
} // Anonymous namespace
|
|
|
|
|
|
|
|
GameListWorker::GameListWorker( |
|
|
|
FileSys::VirtualFilesystem vfs, QString dir_path, bool deep_scan, |
|
|
|
const std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list) |
|
|
|
GameListWorker::GameListWorker(FileSys::VirtualFilesystem vfs, QString dir_path, bool deep_scan, |
|
|
|
const CompatibilityList& compatibility_list) |
|
|
|
: vfs(std::move(vfs)), dir_path(std::move(dir_path)), deep_scan(deep_scan), |
|
|
|
compatibility_list(compatibility_list) {} |
|
|
|
|
|
|
|
|
|
|
|
@ -16,6 +16,7 @@ |
|
|
|
#include <QString> |
|
|
|
|
|
|
|
#include "common/common_types.h" |
|
|
|
#include "yuzu/compatibility_list.h" |
|
|
|
|
|
|
|
class QStandardItem; |
|
|
|
|
|
|
|
@ -32,9 +33,8 @@ class GameListWorker : public QObject, public QRunnable { |
|
|
|
Q_OBJECT |
|
|
|
|
|
|
|
public: |
|
|
|
GameListWorker( |
|
|
|
std::shared_ptr<FileSys::VfsFilesystem> vfs, QString dir_path, bool deep_scan, |
|
|
|
const std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list); |
|
|
|
GameListWorker(std::shared_ptr<FileSys::VfsFilesystem> vfs, QString dir_path, bool deep_scan, |
|
|
|
const CompatibilityList& compatibility_list); |
|
|
|
~GameListWorker() override; |
|
|
|
|
|
|
|
/// Starts the processing of directory tree information. |
|
|
|
@ -67,6 +67,6 @@ private: |
|
|
|
QStringList watch_list; |
|
|
|
QString dir_path; |
|
|
|
bool deep_scan; |
|
|
|
const std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list; |
|
|
|
const CompatibilityList& compatibility_list; |
|
|
|
std::atomic_bool stop_processing; |
|
|
|
}; |
|
|
|
@ -47,6 +47,7 @@ |
|
|
|
#include "video_core/debug_utils/debug_utils.h"
|
|
|
|
#include "yuzu/about_dialog.h"
|
|
|
|
#include "yuzu/bootmanager.h"
|
|
|
|
#include "yuzu/compatibility_list.h"
|
|
|
|
#include "yuzu/configuration/config.h"
|
|
|
|
#include "yuzu/configuration/configure_dialog.h"
|
|
|
|
#include "yuzu/debugger/console.h"
|
|
|
|
@ -725,14 +726,11 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target |
|
|
|
QDesktopServices::openUrl(QUrl::fromLocalFile(qpath)); |
|
|
|
} |
|
|
|
|
|
|
|
void GMainWindow::OnGameListNavigateToGamedbEntry( |
|
|
|
u64 program_id, |
|
|
|
std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list) { |
|
|
|
|
|
|
|
auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id); |
|
|
|
void GMainWindow::OnGameListNavigateToGamedbEntry(u64 program_id, |
|
|
|
const CompatibilityList& compatibility_list) { |
|
|
|
const auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id); |
|
|
|
|
|
|
|
QString directory; |
|
|
|
|
|
|
|
if (it != compatibility_list.end()) |
|
|
|
directory = it->second.second; |
|
|
|
|
|
|
|
|
|
|
|
@ -13,6 +13,7 @@ |
|
|
|
#include "common/common_types.h" |
|
|
|
#include "core/core.h" |
|
|
|
#include "ui_main.h" |
|
|
|
#include "yuzu/compatibility_list.h" |
|
|
|
#include "yuzu/hotkeys.h" |
|
|
|
|
|
|
|
class Config; |
|
|
|
@ -137,9 +138,8 @@ private slots: |
|
|
|
/// Called whenever a user selects a game in the game list widget. |
|
|
|
void OnGameListLoadFile(QString game_path); |
|
|
|
void OnGameListOpenFolder(u64 program_id, GameListOpenTarget target); |
|
|
|
void OnGameListNavigateToGamedbEntry( |
|
|
|
u64 program_id, |
|
|
|
std::unordered_map<std::string, std::pair<QString, QString>>& compatibility_list); |
|
|
|
void OnGameListNavigateToGamedbEntry(u64 program_id, |
|
|
|
const CompatibilityList& compatibility_list); |
|
|
|
void OnMenuLoadFile(); |
|
|
|
void OnMenuLoadFolder(); |
|
|
|
void OnMenuInstallToNAND(); |
|
|
|
|