private void init() { initInput(); initCharacters(); soundPlayer = new SoundPlayer(); if (soundPlayer.getSoundSystem() == null) soundPlayer = new NoSoundPlayer(); soundPlayer.startTitleMusic(); try { emptyCursor = Toolkit.getDefaultToolkit() .createCustomCursor( new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB), new Point(0, 0), "empty"); } catch (RuntimeException e) { e.printStackTrace(); } setFocusTraversalKeysEnabled(false); requestFocus(); // hide cursor, since we're drawing our own one setCursor(emptyCursor); }
public void handleAction(int id) { switch (id) { case TitleMenu.RETURN_TO_TITLESCREEN: clearMenus(); level = null; TitleMenu menu = new TitleMenu(GAME_WIDTH, GAME_HEIGHT); addMenu(menu); this.nextMusicInterval = 0; soundPlayer.stopBackgroundMusic(); soundPlayer.startTitleMusic(); break; case TitleMenu.START_GAME_ID: clearMenus(); isMultiplayer = false; chat.clear(); localId = 0; MojamComponent.localTeam = Team.Team1; synchronizer = new TurnSynchronizer(this, null, 0, 1); synchronizer.setStarted(true); createLevel(TitleMenu.level, TitleMenu.defaultGameMode); soundPlayer.stopBackgroundMusic(); break; case TitleMenu.SELECT_LEVEL_ID: addMenu(new LevelSelect(false)); break; case TitleMenu.SELECT_HOST_LEVEL_ID: addMenu(new LevelSelect(true)); break; /* * case TitleMenu.UPDATE_LEVELS: * GuiMenu menu = menuStack.pop(); * if (menu instanceof LevelSelect) { addMenu(new * LevelSelect(((LevelSelect) menu).bHosting)); } else { addMenu(new * LevelSelect(false)); } } */ case TitleMenu.HOST_GAME_ID: addMenu(new HostingWaitMenu()); isMultiplayer = true; isServer = true; chat.clear(); try { if (isServer) { localId = 0; MojamComponent.localTeam = Team.Team1; serverSocket = new ServerSocket(Options.getAsInteger(Options.MP_PORT, 3000)); serverSocket.setSoTimeout(1000); hostThread = new Thread() { @Override public void run() { boolean fail = true; try { while (!isInterrupted()) { Socket socket = null; try { socket = serverSocket.accept(); } catch (SocketTimeoutException e) { } if (socket == null) { System.out.println("Waiting for player to connect"); continue; } fail = false; packetLink = new NetworkPacketLink(socket); createServerState = 1; break; } } catch (Exception e) { e.printStackTrace(); } if (fail) { try { serverSocket.close(); } catch (IOException e) { } } }; }; hostThread.start(); } } catch (Exception e) { e.printStackTrace(); } break; case TitleMenu.JOIN_GAME_ID: addMenu(new JoinGameMenu()); break; case TitleMenu.CANCEL_JOIN_ID: popMenu(); if (hostThread != null) { hostThread.interrupt(); hostThread = null; } break; case TitleMenu.PERFORM_JOIN_ID: menuStack.clear(); isMultiplayer = true; isServer = false; chat.clear(); String[] data = TitleMenu.ip.trim().split(":"); String ip = data[0]; Integer port = (data.length > 1) ? Integer.parseInt(data[1]) : Options.getAsInteger(Options.MP_PORT, 3000); try { localId = 1; MojamComponent.localTeam = Team.Team2; packetLink = new ClientSidePacketLink(ip, port); synchronizer = new TurnSynchronizer(this, packetLink, localId, 2); packetLink.setPacketListener(this); } catch (Exception e) { e.printStackTrace(); // System.exit(1); addMenu(new TitleMenu(GAME_WIDTH, GAME_HEIGHT)); } break; case TitleMenu.HOW_TO_PLAY: addMenu(new HowToPlayMenu(level != null)); break; case TitleMenu.OPTIONS_ID: addMenu(new OptionsMenu(level != null)); break; case TitleMenu.SELECT_DIFFICULTY_ID: addMenu(new DifficultySelect(false)); break; case TitleMenu.SELECT_DIFFICULTY_HOSTING_ID: addMenu(new DifficultySelect(true)); break; case TitleMenu.KEY_BINDINGS_ID: addMenu(new KeyBindingsMenu(keys, inputHandler)); break; case TitleMenu.LEVEL_EDITOR_ID: addMenu(new LevelEditorMenu()); break; case TitleMenu.EXIT_GAME_ID: System.exit(0); break; case TitleMenu.RETURN_ID: synchronizer.addCommand(new PauseCommand(false)); keys.tick(); break; case TitleMenu.BACK_ID: popMenu(); break; case TitleMenu.CREDITS_ID: addMenu(new CreditsScreen(GAME_WIDTH, GAME_HEIGHT)); break; case TitleMenu.CHARACTER_ID: addMenu(new CharacterSelectionMenu()); break; } }