add option to allow multiple instances (closes #33)
This commit is contained in:
parent
86f6b168d8
commit
6b1b4e2339
|
@ -118,18 +118,20 @@ public class Opsu extends StateBasedGame {
|
||||||
Options.parseOptions();
|
Options.parseOptions();
|
||||||
|
|
||||||
// only allow a single instance
|
// only allow a single instance
|
||||||
try {
|
if (!Options.noSingleInstance()) {
|
||||||
SERVER_SOCKET = new ServerSocket(Options.getPort(), 1, InetAddress.getLocalHost());
|
try {
|
||||||
} catch (UnknownHostException e) {
|
SERVER_SOCKET = new ServerSocket(Options.getPort(), 1, InetAddress.getLocalHost());
|
||||||
// shouldn't happen
|
} catch (UnknownHostException e) {
|
||||||
} catch (IOException e) {
|
// shouldn't happen
|
||||||
ErrorHandler.error(String.format(
|
} catch (IOException e) {
|
||||||
|
ErrorHandler.error(String.format(
|
||||||
"opsu! could not be launched for one of these reasons:\n" +
|
"opsu! could not be launched for one of these reasons:\n" +
|
||||||
"- An instance of opsu! is already running.\n" +
|
"- An instance of opsu! is already running.\n" +
|
||||||
"- Another program is bound to port %d. " +
|
"- Another program is bound to port %d. " +
|
||||||
"You can change the port opsu! uses by editing the \"Port\" field in the configuration file.",
|
"You can change the port opsu! uses by editing the \"Port\" field in the configuration file.",
|
||||||
Options.getPort()), null, false);
|
Options.getPort()), null, false);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
File nativeDir;
|
File nativeDir;
|
||||||
|
|
|
@ -134,6 +134,8 @@ public class Options {
|
||||||
/** Port binding. */
|
/** Port binding. */
|
||||||
private static int port = 49250;
|
private static int port = 49250;
|
||||||
|
|
||||||
|
private static boolean noSingleInstance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the XDG flag in the manifest (if any) is set to "true".
|
* Returns whether the XDG flag in the manifest (if any) is set to "true".
|
||||||
* @return true if XDG directories are enabled, false otherwise
|
* @return true if XDG directories are enabled, false otherwise
|
||||||
|
@ -279,6 +281,15 @@ public class Options {
|
||||||
port = i;
|
port = i;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
NOSINGLEINSTANCE ("NoSingleInstance") {
|
||||||
|
@Override
|
||||||
|
public String write() { return noSingleInstance + ""; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(String s) {
|
||||||
|
noSingleInstance = !"false".equals(s);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// in-game options
|
// in-game options
|
||||||
SCREEN_RESOLUTION ("Screen Resolution", "ScreenResolution", "Restart (Ctrl+Shift+F5) to apply resolution changes.") {
|
SCREEN_RESOLUTION ("Screen Resolution", "ScreenResolution", "Restart (Ctrl+Shift+F5) to apply resolution changes.") {
|
||||||
|
@ -1492,6 +1503,8 @@ public class Options {
|
||||||
*/
|
*/
|
||||||
public static int getPort() { return port; }
|
public static int getPort() { return port; }
|
||||||
|
|
||||||
|
public static boolean noSingleInstance() { return noSingleInstance; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the cursor scale.
|
* Returns the cursor scale.
|
||||||
* @return the scale [0.5, 2]
|
* @return the scale [0.5, 2]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user