Esempio n. 1
0
  @Override
  public void start(Stage primaryStage) {

    VBox loginPane = new VBox();
    loginPane.setAlignment(Pos.CENTER);
    primaryStage.setTitle("Amoeba");
    primaryStage.setScene(new Scene(loginPane, 800, 600));
    primaryStage.show();

    TextField username = new TextField();
    username.setPromptText("Username");
    username.setMaxSize(200, 50);

    Timeline renderTimer = new Timeline();
    Timeline inputTimer = new Timeline();

    ColorPicker colorPicker = new ColorPicker();
    colorPicker.setEditable(true);
    colorPicker.setValue(Color.BLACK);

    lagLabel.setTranslateX(25);
    lagLabel.setTranslateY(10);
    lagLabel.setTextFill(Color.RED);

    TextField address = new TextField("localhost");
    address.setPromptText("Server IP Address");
    address.setMaxSize(200, 50);

    TextField port = new TextField("8080");
    port.setPromptText("Port Number");
    port.setMaxSize(200, 50);

    Button btn = new Button("Play");
    btn.setDefaultButton(true);

    loginPane.getChildren().addAll(username, colorPicker, address, port, btn);

    primaryStage.setResizable(false);
    music.setCycleCount(MediaPlayer.INDEFINITE);
    renderPane.setBackground(new Background(backgroundImage));
    renderPane.setPrefSize(800, 600);

    chatBox.setPrefSize(400, 100);
    chatBox.setTranslateX(0);
    chatBox.setTranslateY(468);
    chatBox.setWrapText(true);
    chatBox.setEditable(false);
    chatBox.setStyle("-fx-opacity: 0.5");

    chatInput.setPrefSize(400, 10);
    chatInput.setTranslateX(0);
    chatInput.setTranslateY(570);
    chatInput.setStyle("-fx-opacity: 0.8");

    highScores.setPrefSize(400, 210);
    highScores.setEditable(false);
    currentScores.setPrefSize(400, 250);
    currentScores.setEditable(false);
    currentScores.setLayoutY(210);
    scores.setTranslateX(-390);
    scores.setTranslateY(0);
    scores.setStyle("-fx-opacity: 0.8");

    scores.setOnMouseEntered(
        (e) -> {
          scores.setTranslateX(0);
        });

    scores.setOnMouseExited(
        (e) -> {
          if (e.getX() > 350) {
            scores.setTranslateX(-390);
          }
        });

    btn.setOnAction(
        (e) -> {
          if (!networkController.isConnected()) {
            networkController.connect(address.getText(), Integer.parseInt(port.getText()));
            if (username.getText().isEmpty()) {
              username.setText("Anonymous");
            }
            networkController.sendMessage(new LoginMessage(username.getText(), ""));

            ArrayList<KeyValuePair> properties = new ArrayList<>();
            properties.add(new KeyValuePair("color", colorPicker.getValue().toString()));
            networkController.sendMessage(new SetBlobPropertiesMessage(properties));

            primaryStage.setScene(new Scene(renderPane));
            renderTimer.play();
            inputTimer.play();
            music.play();
          }
        });

    inputTimer.setCycleCount(Timeline.INDEFINITE);
    inputTimer
        .getKeyFrames()
        .add(
            new KeyFrame(
                Duration.seconds(0.05),
                (e) -> {
                  if (sendCoordinates) {
                    networkController.sendMessage(new MoveTowardCoordinatesMessage(x, y));
                  }
                }));

    renderTimer.setCycleCount(Timeline.INDEFINITE);
    renderTimer
        .getKeyFrames()
        .add(
            new KeyFrame(
                Duration.seconds(0.01),
                (e) -> {
                  render();
                }));

    renderPane.setOnMouseReleased(
        (e) -> {
          this.sendCoordinates = false;
        });

    renderPane.setOnMouseDragged(
        (e) -> {
          this.sendCoordinates = true;
          this.x = e.getX();
          this.y = e.getY();
        });

    renderPane.setOnMouseClicked(
        (e) -> {
          if (e.getButton() == MouseButton.SECONDARY) {
            networkController.sendMessage(new BoostMessage());
          } else if (e.getClickCount() > 1 || e.getButton() == MouseButton.MIDDLE) {
            networkController.sendMessage(new SplitMessage());
          }
        });

    renderPane.setOnKeyPressed(
        (e) -> {
          if (e.getCode().equals(KeyCode.ENTER) && !chatInput.getText().isEmpty()) {
            networkController.sendMessage(new ChatMessage("", chatInput.getText()));
            chatInput.clear();
          }
        });

    primaryStage.setOnCloseRequest(
        (e) -> {
          networkController.sendMessage(new LogoutMessage());
          try {
            Thread.sleep(100);
          } catch (InterruptedException ex) {
            Logger.getLogger(AmoebaClient.class.getName()).log(Level.WARNING, null, ex);
          } finally {
            System.exit(0);
          }
        });
  }
Esempio n. 2
0
  public void setLyrics() throws IOException {

    lyrStage = new Stage();
    lyrStage.setTitle("Lyrics setting");
    lyrStage.setHeight(420);
    AnchorPane root = new AnchorPane();
    root.setStyle(
        "-fx-border-color: black, transparent; -fx-border-width: 1px, 5px; -fx-border-insets: 0px, 1px");

    root.setOnMouseDragged(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent me) {
            lyrStage.setX(me.getScreenX());
            lyrStage.setY(me.getScreenY());
          }
        });

    lyrStage.initStyle(StageStyle.UNDECORATED);
    Scene scene = new Scene(root);

    final TextArea lyricArea = new TextArea();

    lyrStage.setScene(scene);

    lyricArea.setPrefHeight(100);
    lyricArea.setPrefWidth(190);
    lyricArea.setMinHeight(100);
    lyricArea.setLayoutY(315);
    lyricArea.setLayoutX(7);
    lyricArea.setMaxWidth(TextField.USE_PREF_SIZE);

    final Label label = new Label();
    /*
            final ScrollPane sp = new ScrollPane();
            sp.setPrefSize(200, 200);
            sp.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
            sp.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
            sp.setPannable(true);
            sp.setContent(label);
            sp.vvalueProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> ov,
                    Number old_val, Number new_val) {
                        label.setLayoutY(-new_val.doubleValue());
                        label.setLayoutX(-new_val.doubleValue());
                }
            });
    */

    label
        .textProperty()
        .bind(
            new StringBinding() {
              {
                bind(lyricArea.textProperty());
              }

              @Override
              protected String computeValue() {

                String text = lyricArea.getText();

                return "Lyric preview: \n\n " + songName + "\n\n" + text;
              }
            });

    final VBox vBox = new VBox();
    vBox.setPrefHeight(800); // ////////////////////////////////////////
    vBox.setPrefWidth(240);
    vBox.setPadding(new Insets(18));
    vBox.getChildren().addAll(label);

    final VBox vBox2 = new VBox();
    vBox2.setPrefHeight(340);
    vBox2.setPrefWidth(240);
    vBox2.setAlignment(Pos.BOTTOM_RIGHT);

    Button btnText = new Button();
    btnText.setText("Ok");
    btnText.setStyle("-fx-base: white;");
    btnText.setOnAction(
        new EventHandler<ActionEvent>() {

          @Override
          public void handle(ActionEvent event) {
            String txt = lyricArea.getText();
            textSet(txt);
            lyrStage.close();
          }
        });

    vBox2.getChildren().add(btnText);

    ScrollBar sc = new ScrollBar();
    sc.setMin(0);
    sc.setMax(500);
    sc.setValue(30);
    sc.setPrefWidth(3);
    sc.setPrefHeight(160);
    sc.setVisibleAmount(10);
    sc.setOrientation(Orientation.VERTICAL);

    sc.valueProperty()
        .addListener(
            new ChangeListener<Number>() {
              @Override
              public void changed(
                  ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
                label.setLayoutY(-new_val.doubleValue());
              }
            });

    root.getChildren().addAll(vBox, lyricArea, vBox2, sc);

    lyrStage.setX(50);
    lyrStage.setY(50);

    lyrStage.show();
  }