package Roguelike; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Date; import java.util.HashMap; import Roguelike.Screens.*; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.files.FileHandle; import javax.swing.*; public class RoguelikeGame extends Game { public static RoguelikeGame Instance; public RoguelikeGame() { Instance = this; } public enum ScreenEnum { MAINMENU, GAME, LOADING, CHARACTERCREATION, OPTIONS, CREDITS } public final HashMap<ScreenEnum, Screen> screens = new HashMap<ScreenEnum, Screen>(); @Override public void create() { Global.ApplicationChanger.processResources(); if (!Global.ANDROID) { final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter( sw ); final Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread myThread, Throwable e) { e.printStackTrace( pw ); String exceptionAsString = sw.toString(); FileHandle file = Gdx.files.local( "error.log" ); file.writeString( exceptionAsString, false ); JOptionPane.showMessageDialog( null, "An fatal error occured. Please send error.log to me so that I can fix it.", "An error occured", JOptionPane.ERROR_MESSAGE ); e.printStackTrace(); } }; Thread.currentThread().setDefaultUncaughtExceptionHandler(handler); } screens.put( ScreenEnum.GAME, new GameScreen() ); screens.put( ScreenEnum.MAINMENU, new MainMenuScreen() ); screens.put( ScreenEnum.LOADING, new LoadingScreen() ); screens.put( ScreenEnum.CHARACTERCREATION, new CharacterCreationScreen() ); screens.put( ScreenEnum.OPTIONS, new OptionsScreen() ); screens.put( ScreenEnum.CREDITS, new CreditsScreen() ); switchScreen( ScreenEnum.MAINMENU ); } public void switchScreen( ScreenEnum screen ) { this.setScreen( screens.get( screen ) ); } }