From: Thomas Debesse Date: Thu, 5 Sep 2019 21:23:10 +0000 (+0200) Subject: do not prompt for game when restarting after switching game, <3 @Garux X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=05577da3a851b4c00f19eba04007eec2e02f12c0;p=xonotic%2Fnetradiant.git do not prompt for game when restarting after switching game, <3 @Garux --- diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 659308ae..732a7401 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -231,6 +231,7 @@ struct LogConsole { void RegisterGlobalPreferences( PreferenceSystem& preferences ){ preferences.registerPreference( "gamefile", make_property_string( g_GamesDialog.m_sGameFile ) ); preferences.registerPreference( "gamePrompt", make_property_string( g_GamesDialog.m_bGamePrompt ) ); + preferences.registerPreference( "skipGamePromptOnce", make_property_string( g_GamesDialog.m_bSkipGamePromptOnce ) ); preferences.registerPreference( "log console", make_property_string() ); } @@ -403,9 +404,12 @@ void CGameDialog::Reset(){ } void CGameDialog::Init(){ + bool gamePrompt = false; + InitGlobalPrefPath(); LoadPrefs(); ScanForGames(); + if ( mGames.empty() ) { Error( "Didn't find any valid game file descriptions, aborting\n" ); } @@ -426,7 +430,15 @@ void CGameDialog::Init(){ CGameDescription* currentGameDescription = 0; - if ( !m_bGamePrompt ) { + // m_bSkipGamePromptOnce is used to not prompt for game on restart, only on fresh startup + if ( m_bGamePrompt && !m_bSkipGamePromptOnce ) { + gamePrompt = true; + } + + m_bSkipGamePromptOnce = false; + g_GamesDialog.SavePrefs(); + + if ( !gamePrompt ) { // search by .game name std::list::iterator iGame; for ( iGame = mGames.begin(); iGame != mGames.end(); ++iGame ) @@ -437,13 +449,15 @@ void CGameDialog::Init(){ } } } - if ( m_bGamePrompt || !currentGameDescription ) { + + if ( gamePrompt || !currentGameDescription ) { Create(); DoGameDialog(); // use m_nComboSelect to identify the game to run as and set the globals currentGameDescription = GameDescriptionForComboItem(); ASSERT_NOTNULL( currentGameDescription ); } + g_pGameDescription = currentGameDescription; g_pGameDescription->Dump(); @@ -927,6 +941,7 @@ void PreferencesDialog_showDialog(){ g_restart_required.clear(); if ( ret == ui::alert_response::YES ) { + g_GamesDialog.m_bSkipGamePromptOnce = true; Radiant_Restart(); } } diff --git a/radiant/preferences.h b/radiant/preferences.h index 59dd60da..f2c47c03 100644 --- a/radiant/preferences.h +++ b/radiant/preferences.h @@ -238,6 +238,12 @@ CopiedString m_sGameFile; prompt which game to load on startup */ bool m_bGamePrompt; +/*! + when if m_bGamePrompt is true + do not prompt at startup which game to load this time, but prompt the next times + this is used to not uselessly prompt game after having restarted because user switched game + */ +bool m_bSkipGamePromptOnce; /*! log console to radiant.log m_bForceLogConsole is an obscure forced latching situation @@ -253,6 +259,7 @@ std::list mGames; CGameDialog() : m_sGameFile( "" ), m_bGamePrompt( true ), + m_bSkipGamePromptOnce( false ), m_bForceLogConsole( false ){ } virtual ~CGameDialog();