Fixed endless prompting about Steam on startup for standalone distros

This commit is contained in:
Vhati 2017-12-12 06:14:25 -05:00
parent 01f17e5962
commit 65f1f84ca9
2 changed files with 34 additions and 18 deletions

View file

@ -69,9 +69,10 @@ public class FTLModManager {
boolean writeConfig = false;
Properties props = new Properties();
props.setProperty( SlipstreamConfig.ALLOW_ZIP, "false" );
props.setProperty( SlipstreamConfig.FTL_DATS_PATH, "" );
props.setProperty( SlipstreamConfig.STEAM_EXE_PATH, "" );
props.setProperty( SlipstreamConfig.RUN_STEAM_FTL, "false" );
props.setProperty( SlipstreamConfig.FTL_DATS_PATH, "" ); // Prompt.
props.setProperty( SlipstreamConfig.STEAM_DISTRO, "" ); // Prompt.
props.setProperty( SlipstreamConfig.STEAM_EXE_PATH, "" ); // Prompt.
props.setProperty( SlipstreamConfig.RUN_STEAM_FTL, "" ); // Prompt.
props.setProperty( SlipstreamConfig.NEVER_RUN_FTL, "false" );
props.setProperty( SlipstreamConfig.USE_DEFAULT_UI, "false" );
props.setProperty( SlipstreamConfig.REMEMBER_GEOMETRY, "true" );
@ -188,10 +189,24 @@ public class FTLModManager {
}
// Ask about Steam.
if ( appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" ).length() == 0 ) {
if ( appConfig.getProperty( SlipstreamConfig.STEAM_DISTRO, "" ).length() == 0 ) {
int steamBasedResponse = JOptionPane.showConfirmDialog( null, "Was FTL installed via Steam?", "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE );
if ( steamBasedResponse == JOptionPane.YES_OPTION ) {
appConfig.setProperty( SlipstreamConfig.STEAM_DISTRO, "true" );
writeConfig = true;
}
else {
appConfig.setProperty( SlipstreamConfig.STEAM_DISTRO, "false" );
writeConfig = true;
}
}
// If this is a Steam distro.
if ( "true".equals( appConfig.getProperty( SlipstreamConfig.STEAM_DISTRO, "false" ) ) ) {
// Find Steam's executable.
if ( appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" ).length() == 0 ) {
File steamExeFile = FTLUtilities.findSteamExe();
if ( steamExeFile == null && System.getProperty( "os.name" ).startsWith( "Windows" ) ) {
@ -239,8 +254,11 @@ public class FTLModManager {
writeConfig = true;
log.info( "Steam located at: "+ steamExeFile.getAbsolutePath() );
}
}
if ( appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" ).length() > 0 ) {
if ( appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" ).length() > 0 ) {
if ( appConfig.getProperty( SlipstreamConfig.RUN_STEAM_FTL, "" ).length() == 0 ) {
String[] launchOptions = new String[] {"Directly", "Steam"};
int launchResponse = JOptionPane.showOptionDialog( null, "Would you prefer to launch FTL directly, or via Steam?", "How to Launch?", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, launchOptions, launchOptions[1] );
@ -254,10 +272,6 @@ public class FTLModManager {
}
}
}
else {
appConfig.setProperty( SlipstreamConfig.RUN_STEAM_FTL, "false" );
writeConfig = true;
}
}
// Prompt if update_catalog is invalid or hasn't been set.
@ -271,7 +285,7 @@ public class FTLModManager {
String message = "";
message += "Would you like Slipstream to periodically check for updates?\n";
message += "\n";
message += "You can change this later in modman.cfg.";
message += "You can change this later.";
int response = JOptionPane.showConfirmDialog( null, message, "Updates", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE );
if ( response == JOptionPane.YES_OPTION ) {

View file

@ -900,6 +900,14 @@ public class ManagerFrame extends JFrame implements ActionListener, ModsScanObse
}
}
else if ( source == steamVerifyCacheMenuItem ) {
String exePath = appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" );
File exeFile = null;
if ( exePath.length() == 0 || !(exeFile=new File( exePath )).exists() ) {
log.warn( "Steam's location was either not set or doesn't exist" );
JOptionPane.showMessageDialog( ManagerFrame.this, "Steam's location was either not set or doesn't exist.", "Nothing to do", JOptionPane.WARNING_MESSAGE );
return;
}
StringBuilder verifyBuf = new StringBuilder();
verifyBuf.append( "Slipstream is about to tell Steam to re-download FTL's resources. This will get\n" );
verifyBuf.append( "the game back to a working unmodded state, but it could take a while.\n" );
@ -918,13 +926,7 @@ public class ManagerFrame extends JFrame implements ActionListener, ModsScanObse
int response = JOptionPane.showConfirmDialog( ManagerFrame.this, verifyBuf.toString(), "Continue?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE );
if ( response == JOptionPane.YES_OPTION ) {
try {
String exePath = appConfig.getProperty( SlipstreamConfig.STEAM_EXE_PATH, "" );
File exeFile = null;
if ( exePath.length() > 0 && (exeFile=new File( exePath )).exists() ) {
FTLUtilities.verifySteamGameCache( exeFile, FTLUtilities.STEAM_APPID_FTL );
} else {
log.warn( "Steam executable could not be found" );
}
FTLUtilities.verifySteamGameCache( exeFile, FTLUtilities.STEAM_APPID_FTL );
}
catch ( IOException f ) {
log.error( "Couldn't tell Steam to 'verify game cache'", f );