package visualizer; import common.Log; import data.Rules; /** * @author Michel Bartsch * * The game-state-visualizer-program starts in this class. * The main components are initialized here. */ public class GameStateVisualizer { private static final String HELP_TEMPLATE = "Usage: java -jar GameStateVisualizer.jar {options}" + "\n (-h | --help) display help" + "\n (-l | --league) %s%sselect league (default is spl)" + "\n"; private static final String COMMAND_HELP = "--help"; private static final String COMMAND_HELP_SHORT = "-h"; private final static String COMMAND_LEAGUE = "--league"; private final static String COMMAND_LEAGUE_SHORT = "-l"; private static Listener listener; /** * The program starts here. * * @param args This is ignored. */ public static void main(String[] args) { //commands if ((args.length > 0) && ((args[0].equalsIgnoreCase(COMMAND_HELP_SHORT)) || (args[0].equalsIgnoreCase(COMMAND_HELP))) ) { String leagues = ""; for (Rules rules : Rules.LEAGUES) { leagues += (leagues.equals("") ? "" : " | ") + rules.leagueDirectory; } if (leagues.contains("|")) { leagues = "(" + leagues + ")"; } System.out.printf(HELP_TEMPLATE, leagues, leagues.length() < 17 ? " ".substring(leagues.length()) : "\n "); System.exit(0); } if ((args.length >= 2) && ((args[0].equals(COMMAND_LEAGUE_SHORT)) || (args[0].equals(COMMAND_LEAGUE)))) { for (int i=0; i < Rules.LEAGUES.length; i++) { if (Rules.LEAGUES[i].leagueDirectory.equals(args[1])) { Rules.league = Rules.LEAGUES[i]; break; } } } GUI gui = new GUI(); new KeyboardListener(gui); listener = new Listener(gui); listener.start(); } /** * This should be called when the program is shutting down to close * sockets and finally exit. */ public static void exit() { listener.interrupt(); try { listener.join(); } catch (InterruptedException e) { Log.error("Waiting for listener to shutdown was interrupted."); } System.exit(0); } }