Add per game configuration options (#6187)

* common: Move settings to common from core.

- Removes a dependency on core and input_common from common.

* code: Wrap settings values

* Port from yuzu to allow per game settings

* citra_qt: Initial per-game settings dialog

* citra_qt: Use new API for read/save of config values

* citra_qt: Per game audio settings

* citra_qt: Per game graphics settings

* citra_qt: Per game system settings

* citra_qt: Per game general settings

* citra_qt: Document and run clang format

* citra_qt: Make icon smaller and centered

* citra_qt: Remove version number

* Not sure how to extract that, can always add it back later

* citra_qt: Wrap UISettings

* citra_qt: Fix unthottled fps setting

* citra_qt: Remove margin in emulation tab

* citra_qt: Implement some suggestions

* Bring back speed switch hotkey

* Allow configuration when game is running

* Rename/adjust UI stuff

* citra_qt: Fix build with separate windows

* citra_qt: Address feedback

* citra_qt: Log per-game settings before launching games

* citra_qt: Add shader cache options

* Also fix android build

* citra_qt: Add DLC menu option

* citra_qt: Run clang-format

* citra_qt: Adjust for time offset

* citra_qt: Implement suggestions

* Run clang-format

Co-authored-by: bunnei <bunneidev@gmail.com>
This commit is contained in:
GPUCode 2022-12-08 13:27:25 +02:00 committed by GitHub
parent f261daf2fa
commit 48ee112ceb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
92 changed files with 3171 additions and 1546 deletions

View file

@ -13,7 +13,7 @@
#include <QString>
#include <QStringList>
#include <QVector>
#include "common/common_types.h"
#include "common/settings.h"
namespace UISettings {
@ -40,13 +40,13 @@ struct GameDir {
}
};
enum class GameListIconSize {
enum class GameListIconSize : u32 {
NoIcon, ///< Do not display icons
SmallIcon, ///< Display a small (24x24) icon
LargeIcon, ///< Display a large (48x48) icon
};
enum class GameListText {
enum class GameListText : s32 {
NoText = -1, ///< No text
FileName, ///< Display the file name of the entry
FullPath, ///< Display the full path of the entry
@ -65,40 +65,41 @@ struct Values {
QByteArray gamelist_header_state;
QByteArray microprofile_geometry;
bool microprofile_visible;
Settings::Setting<bool> microprofile_visible{false, "microProfileDialogVisible"};
bool single_window_mode;
bool fullscreen;
bool display_titlebar;
bool show_filter_bar;
bool show_status_bar;
Settings::Setting<bool> single_window_mode{true, "singleWindowMode"};
Settings::Setting<bool> fullscreen{false, "fullscreen"};
Settings::Setting<bool> display_titlebar{true, "displayTitleBars"};
Settings::Setting<bool> show_filter_bar{true, "showFilterBar"};
Settings::Setting<bool> show_status_bar{true, "showStatusBar"};
bool confirm_before_closing;
bool first_start;
bool pause_when_in_background;
bool hide_mouse;
Settings::Setting<bool> confirm_before_closing{true, "confirmClose"};
Settings::Setting<bool> first_start{true, "firstStart"};
Settings::Setting<bool> pause_when_in_background{false, "pauseWhenInBackground"};
Settings::Setting<bool> hide_mouse{false, "hideInactiveMouse"};
bool updater_found;
bool update_on_close;
bool check_for_update_on_start;
Settings::Setting<bool> update_on_close{false, "update_on_close"};
Settings::Setting<bool> check_for_update_on_start{true, "check_for_update_on_start"};
// Discord RPC
bool enable_discord_presence;
Settings::Setting<bool> enable_discord_presence{true, "enable_discord_presence"};
// Game List
GameListIconSize game_list_icon_size;
GameListText game_list_row_1;
GameListText game_list_row_2;
bool game_list_hide_no_icon;
bool game_list_single_line_mode;
Settings::Setting<GameListIconSize> game_list_icon_size{GameListIconSize::LargeIcon,
"iconSize"};
Settings::Setting<GameListText> game_list_row_1{GameListText::TitleName, "row1"};
Settings::Setting<GameListText> game_list_row_2{GameListText::FileName, "row2"};
Settings::Setting<bool> game_list_hide_no_icon{false, "hideNoIcon"};
Settings::Setting<bool> game_list_single_line_mode{false, "singleLineMode"};
u16 screenshot_resolution_factor;
Settings::Setting<u16> screenshot_resolution_factor{0, "screenshot_resolution_factor"};
Settings::SwitchableSetting<std::string> screenshot_path{"", "screenshotPath"};
QString roms_path;
QString symbols_path;
QString movie_record_path;
QString movie_playback_path;
QString screenshot_path;
QString video_dumping_path;
QString game_dir_deprecated;
bool game_dir_deprecated_deepscan;
@ -111,7 +112,7 @@ struct Values {
// Shortcut name <Shortcut, context>
std::vector<Shortcut> shortcuts;
uint32_t callout_flags;
Settings::Setting<u32> callout_flags{0, "calloutFlags"};
// multiplayer settings
QString nickname;
@ -127,7 +128,7 @@ struct Values {
std::pair<std::vector<std::string>, std::vector<std::string>> ban_list;
// logging
bool show_console;
Settings::Setting<bool> show_console{false, "showConsole"};
};
extern Values values;