package net.classicube.launcher;
// Keeps track of the global GameSession and AccountManager instances.
import java.util.logging.Level;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public final class SessionManager {
private static GameSession activeSession;
private static AccountManager accountManager;
public static GameSession selectService(final GameServiceType serviceType) {
accountManager = new AccountManager(serviceType);
accountManager.load();
Prefs.setSelectedGameService(serviceType);
if (serviceType == GameServiceType.ClassiCubeNetService) {
activeSession = new ClassiCubeNetSession();
} else {
activeSession = new MinecraftNetSession();
}
return activeSession;
}
public static GameSession getSession() {
return activeSession;
}
public static AccountManager getAccountManager() {
return accountManager;
}
public static void clearAllResumeInfo() {
try {
Preferences servicesNode = Preferences.userNodeForPackage(SessionManager.class);
Preferences ccNode = servicesNode.node(GameServiceType.ClassiCubeNetService.name());
ccNode.node(GameSession.RESUME_NODE_NAME).removeNode();
Preferences mcNode = servicesNode.node(GameServiceType.MinecraftNetService.name());
mcNode.node(GameSession.RESUME_NODE_NAME).removeNode();
} catch (final BackingStoreException ex) {
LogUtil.getLogger().log(Level.SEVERE, "Error erasing resume info", ex);
}
}
public static boolean hasAnyResumeInfo() {
try {
Preferences servicesNode = Preferences.userNodeForPackage(SessionManager.class);
Preferences ccNode = servicesNode.node(GameServiceType.ClassiCubeNetService.name());
if (ccNode.nodeExists(GameSession.RESUME_NODE_NAME)) {
return true;
}
Preferences mcNode = servicesNode.node(GameServiceType.MinecraftNetService.name());
return mcNode.nodeExists(GameSession.RESUME_NODE_NAME);
} catch (final BackingStoreException ex) {
LogUtil.getLogger().log(Level.SEVERE, "Error checking resume info", ex);
return false;
}
}
private SessionManager() {
}
}