@ -1334,7 +1334,13 @@ void GMainWindow::BootGame(const QString& filename, std::size_t program_index) {
if ( ! ( loader = = nullptr | | loader - > ReadProgramId ( title_id ) ! = Loader : : ResultStatus : : Success ) ) {
if ( ! ( loader = = nullptr | | loader - > ReadProgramId ( title_id ) ! = Loader : : ResultStatus : : Success ) ) {
// Load per game settings
// Load per game settings
Config per_game_config ( fmt : : format ( " {:016X} " , title_id ) , Config : : ConfigType : : PerGameConfig ) ;
if ( title_id = = 0 ) {
Config per_game_config ( Common : : FS : : GetFilename ( filename . toStdString ( ) ) ,
Config : : ConfigType : : PerGameConfig ) ;
} else {
Config per_game_config ( fmt : : format ( " {:016X} " , title_id ) ,
Config : : ConfigType : : PerGameConfig ) ;
}
}
}
ConfigureVibration : : SetAllVibrationDevices ( ) ;
ConfigureVibration : : SetAllVibrationDevices ( ) ;
@ -1795,7 +1801,8 @@ void GMainWindow::RemoveAddOnContent(u64 program_id, const QString& entry_type)
tr ( " Successfully removed %1 installed DLC. " ) . arg ( count ) ) ;
tr ( " Successfully removed %1 installed DLC. " ) . arg ( count ) ) ;
}
}
void GMainWindow : : OnGameListRemoveFile ( u64 program_id , GameListRemoveTarget target ) {
void GMainWindow : : OnGameListRemoveFile ( u64 program_id , GameListRemoveTarget target ,
std : : string_view game_path ) {
const QString question = [ this , target ] {
const QString question = [ this , target ] {
switch ( target ) {
switch ( target ) {
case GameListRemoveTarget : : ShaderCache :
case GameListRemoveTarget : : ShaderCache :
@ -1817,7 +1824,7 @@ void GMainWindow::OnGameListRemoveFile(u64 program_id, GameListRemoveTarget targ
RemoveTransferableShaderCache ( program_id ) ;
RemoveTransferableShaderCache ( program_id ) ;
break ;
break ;
case GameListRemoveTarget : : CustomConfiguration :
case GameListRemoveTarget : : CustomConfiguration :
RemoveCustomConfiguration ( program_id );
RemoveCustomConfiguration ( program_id , game_path );
break ;
break ;
}
}
}
}
@ -1842,9 +1849,16 @@ void GMainWindow::RemoveTransferableShaderCache(u64 program_id) {
}
}
}
}
void GMainWindow : : RemoveCustomConfiguration ( u64 program_id ) {
void GMainWindow : : RemoveCustomConfiguration ( u64 program_id , std : : string_view game_path ) {
const auto custom_config_file_path = Common : : FS : : GetYuzuPath ( Common : : FS : : YuzuPath : : ConfigDir ) /
std : : string custom_config_file_path ;
" custom " / fmt : : format ( " {:016X}.ini " , program_id ) ;
if ( program_id = = 0 ) {
custom_config_file_path = Common : : FS : : GetYuzuPath ( Common : : FS : : YuzuPath : : ConfigDir ) /
" custom " /
fmt : : format ( " {:s}.ini " , Common : : FS : : GetFilename ( game_path ) ) ;
} else {
custom_config_file_path = Common : : FS : : GetYuzuPath ( Common : : FS : : YuzuPath : : ConfigDir ) /
" custom " / fmt : : format ( " {:016X}.ini " , program_id ) ;
}
if ( ! Common : : FS : : Exists ( custom_config_file_path ) ) {
if ( ! Common : : FS : : Exists ( custom_config_file_path ) ) {
QMessageBox : : warning ( this , tr ( " Error Removing Custom Configuration " ) ,
QMessageBox : : warning ( this , tr ( " Error Removing Custom Configuration " ) ,
@ -2633,7 +2647,7 @@ void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file
const auto v_file = Core : : GetGameFileFromPath ( vfs , file_name ) ;
const auto v_file = Core : : GetGameFileFromPath ( vfs , file_name ) ;
const auto & system = Core : : System : : GetInstance ( ) ;
const auto & system = Core : : System : : GetInstance ( ) ;
ConfigurePerGame dialog ( this , title_id );
ConfigurePerGame dialog ( this , title_id , file_name );
dialog . LoadFromFile ( v_file ) ;
dialog . LoadFromFile ( v_file ) ;
const auto result = dialog . exec ( ) ;
const auto result = dialog . exec ( ) ;
if ( result = = QDialog : : Accepted ) {
if ( result = = QDialog : : Accepted ) {