public void buttonPressed(Button button) { if (button.getId() == TitleMenu.RESTART_GAME_ID) { clearMenus(); TitleMenu menu = new TitleMenu(GAME_WIDTH, GAME_HEIGHT); addMenu(menu); } else if (button.getId() == TitleMenu.START_GAME_ID) { clearMenus(); isMultiplayer = false; localId = 0; synchronizer = new TurnSynchronizer(this, null, 0, 1); synchronizer.setStarted(true); createLevel(TitleMenu.level); } else if (button.getId() == TitleMenu.SELECT_LEVEL_ID) { addMenu(new LevelSelect(false)); } else if (button.getId() == TitleMenu.SELECT_HOST_LEVEL_ID) { addMenu(new LevelSelect(true)); } else if (button.getId() == TitleMenu.HOST_GAME_ID) { addMenu(new HostingWaitMenu()); isMultiplayer = true; isServer = true; try { if (isServer) { localId = 0; serverSocket = new ServerSocket(3000); serverSocket.setSoTimeout(1000); hostThread = new Thread() { 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("asdf"); 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(); } } else if (button.getId() == TitleMenu.JOIN_GAME_ID) { addMenu(new JoinGameMenu()); } else if (button.getId() == TitleMenu.CANCEL_JOIN_ID) { popMenu(); if (hostThread != null) { hostThread.interrupt(); hostThread = null; } } else if (button.getId() == TitleMenu.PERFORM_JOIN_ID) { menuStack.clear(); isMultiplayer = true; isServer = false; try { localId = 1; packetLink = new ClientSidePacketLink(TitleMenu.ip, 3000); 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)); } } else if (button.getId() == TitleMenu.SELECT_DIFFICULTY_ID) { addMenu(new DifficultySelect()); } else if (button.getId() == TitleMenu.EXIT_GAME_ID) { System.exit(0); } }
private void tick() { if (level != null) { if (level.player1Score >= Level.TARGET_SCORE) { addMenu(new WinMenu(GAME_WIDTH, GAME_HEIGHT, 1)); level = null; return; } if (level.player2Score >= Level.TARGET_SCORE) { addMenu(new WinMenu(GAME_WIDTH, GAME_HEIGHT, 2)); level = null; return; } if (keys.escape.wasPressed()) { clearMenus(); addMenu(new TitleMenu(GAME_WIDTH, GAME_HEIGHT)); level = null; return; } } if (packetLink != null) { packetLink.tick(); } mouseButtons.setPosition(getMousePosition()); if (!menuStack.isEmpty()) { menuStack.peek().tick(mouseButtons); } if (mouseMoved) { mouseMoved = false; mouseHideTime = 0; if (mouseHidden) { mouseHidden = false; } } if (mouseHideTime < 60) { mouseHideTime++; if (mouseHideTime == 60) { mouseHidden = true; } } mouseButtons.tick(); if (level != null) { if (synchronizer.preTurn()) { synchronizer.postTurn(); for (int index = 0; index < keys.getAll().size(); index++) { Keys.Key key = keys.getAll().get(index); boolean nextState = key.nextState; if (key.isDown != nextState) { synchronizer.addCommand(new ChangeKeyCommand(index, nextState)); } } if (keys.save.isDown) { level.save(); } keys.tick(); for (Keys skeys : synchedKeys) { skeys.tick(); } // if mouse is in use, update player orientation before level // tick if (!mouseHidden) { // update player mouse, in world pixels relative to player player.setAimByMouse( ((mouseButtons.getX() / SCALE) - (screen.w / 2)), (((mouseButtons.getY() / SCALE) + 24) - (screen.h / 2))); } else { player.setAimByKeyboard(); } level.tick(); } } if (createServerState == 1) { createServerState = 2; synchronizer = new TurnSynchronizer(MojamComponent.this, packetLink, localId, 2); clearMenus(); createLevel(TitleMenu.level); synchronizer.setStarted(true); packetLink.sendPacket(new StartGamePacket(TurnSynchronizer.synchedSeed, TitleMenu.level)); packetLink.setPacketListener(MojamComponent.this); } }