magarena/src/magic/MagicMain.java

117 lines
3.7 KiB
Java

package magic;
import magic.data.CardDefinitions;
import magic.data.CubeDefinitions;
import magic.data.DeckGenerators;
import magic.data.DeckUtils;
import magic.data.History;
import magic.data.KeywordDefinitions;
import magic.model.MagicGameLog;
import magic.ui.MagicFrame;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import java.io.File;
public class MagicMain {
public static JFrame rootFrame;
private static final String GAME_FOLDER = "Magarena";
private static final String MODS_PATH = "mods";
private static final String SCRIPTS_PATH = "scripts";
private static final String GAME_PATH =
(System.getProperty("magarena.dir") != null ?
System.getProperty("magarena.dir") :
System.getProperty("user.dir")) +
File.separatorChar +
GAME_FOLDER;
public static void main(final String[] args) {
// setup the handler for any uncaught exception
Thread.setDefaultUncaughtExceptionHandler(new magic.model.MagicGameReport());
// setup the game log
MagicGameLog.initialize();
// show the data folder being used
System.err.println("Data folder : "+GAME_PATH);
// try to set the look and feel
try {
for (final LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
// customize nimbus look
UIManager.getLookAndFeelDefaults().put("Table.showGrid", true);
// removes hardcoded border
UIManager.getLookAndFeelDefaults().put("ScrollPane[Enabled].borderPainter", null);
}
catch (Exception e) {
System.err.println("Unable to set look and feel. Probably missing the latest version of Java 6.");
e.printStackTrace();
}
final long start_time = System.currentTimeMillis();
initialize();
final double duration = (double)(System.currentTimeMillis() - start_time) / 1000;
System.err.println("Initalization of engine took " + duration + "s");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
rootFrame = new MagicFrame();
}
});
}
public static String getGamePath() {
return GAME_PATH;
}
public static String getGameFolder() {
return GAME_FOLDER;
}
public static String getModsPath() {
return getGamePath()+File.separatorChar+MODS_PATH;
}
public static String getScriptsPath() {
return getGamePath()+File.separatorChar+SCRIPTS_PATH;
}
static void initializeEngine() {
CardDefinitions.loadCardDefinitions();
if (Boolean.getBoolean("debug")) {
CardDefinitions.loadCardAbilities();
}
CardDefinitions.loadCardTexts();
CubeDefinitions.loadCubeDefinitions();
KeywordDefinitions.getInstance().loadKeywordDefinitions();
DeckGenerators.getInstance().loadDeckGenerators();
}
private static void initialize() {
final File gamePathFile = new File(getGamePath());
if (!gamePathFile.exists() && !gamePathFile.mkdir()) {
System.err.println("Unable to create directory " + getGamePath());
}
final File modsPathFile = new File(getModsPath());
if (!modsPathFile.exists() && !modsPathFile.mkdir()) {
System.err.println("Unable to create directory " + getModsPath());
}
DeckUtils.createDeckFolder();
History.createHistoryFolder();
initializeEngine();
}
}