package rabbitescape.ui.swing;
import static rabbitescape.engine.config.ConfigKeys.*;
import javax.swing.JFileChooser;
import rabbitescape.engine.config.Config;
import rabbitescape.engine.config.ConfigFile;
import rabbitescape.engine.config.ConfigSchema;
import rabbitescape.engine.config.IConfigStorage;
import rabbitescape.engine.config.RealConfigUpgrades;
import rabbitescape.engine.config.StandardConfigSchema;
import rabbitescape.engine.util.RealFileSystem;
public class SwingConfigSetup
{
private static final String CONFIG_PATH =
"~/.rabbitescape/config/ui.properties"
.replace( "~", System.getProperty( "user.home" ) );
public static final String CFG_GAME_WINDOW_LEFT = "game.window.left";
public static final String CFG_GAME_WINDOW_TOP = "game.window.top";
public static final String CFG_GAME_WINDOW_WIDTH = "game.window.width";
public static final String CFG_GAME_WINDOW_HEIGHT = "game.window.height";
public static final String CFG_CLICK_THRESHOLD_MS = "click.threshold.ms";
public static final String DEPRECATED_CFG_MENU_WINDOW_LEFT = "menu.window.left";
public static final String DEPRECATED_CFG_MENU_WINDOW_TOP = "menu.window.top";
public static final String DEPRECATED_CFG_MENU_WINDOW_WIDTH = "menu.window.width";
public static final String DEPRECATED_CFG_MENU_WINDOW_HEIGHT = "menu.window.height";
public static final String CFG_MUTED = "muted";
public static Config createConfig()
{
return createConfig(
new ConfigFile( new RealFileSystem(), CONFIG_PATH )
);
}
public static Config createConfig( IConfigStorage storage )
{
ConfigSchema definition = new ConfigSchema();
StandardConfigSchema.setSchema( definition );
definition.set(
DEPRECATED_CFG_MENU_WINDOW_LEFT,
String.valueOf( Integer.MIN_VALUE ),
"deprecated"
);
definition.set(
DEPRECATED_CFG_MENU_WINDOW_TOP,
String.valueOf( Integer.MIN_VALUE ),
"deprecated"
);
definition.set(
DEPRECATED_CFG_MENU_WINDOW_WIDTH,
String.valueOf( Integer.MIN_VALUE ),
"deprecated"
);
definition.set(
DEPRECATED_CFG_MENU_WINDOW_HEIGHT,
String.valueOf( Integer.MIN_VALUE ),
"deprecated"
);
definition.set(
CFG_GAME_WINDOW_LEFT,
String.valueOf( Integer.MIN_VALUE ),
"The x position of the game window on the screen"
);
definition.set(
CFG_GAME_WINDOW_TOP,
String.valueOf( Integer.MIN_VALUE ),
"The y position of the game window on the screen"
);
definition.set(
CFG_GAME_WINDOW_WIDTH,
String.valueOf( Integer.MIN_VALUE ),
"The width of the game window on the screen"
);
definition.set(
CFG_GAME_WINDOW_HEIGHT,
String.valueOf( Integer.MIN_VALUE ),
"The height of the game window on the screen"
);
definition.set(
CFG_CLICK_THRESHOLD_MS,
String.valueOf( 300 ),
"Time in ms. Longer than this are drags." );
definition.set(
CFG_MUTED,
String.valueOf( false ),
"Disable all sound"
);
definition.set(
CFG_LOAD_LEVEL_PATH,
new JFileChooser().getCurrentDirectory().getAbsolutePath(),
"Default path in the dialog to load a level file for testing."
);
return new Config(
definition,
storage,
RealConfigUpgrades.realConfigUpgrades()
);
}
}