mourning-ember / src / main / java / dev / llan / view / game / TitleScreenView.java
TitleScreenView.java
Raw
package dev.llan.view.game;

import dev.llan.receivers.Receiver;
import dev.llan.view.RenderComponent;
import dev.llan.view.View;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;

public class TitleScreenView implements RenderComponent {
  private StackPane container;
  private VBox box;

  private Label title;
  private Label lastScore;
  private Label highScore;

  private Button play;

  private Label author;

  private final Receiver receiver;

  public TitleScreenView(View view, Receiver receiver) {
    container = new StackPane();
    container.getStyleClass().add("title-background");

    box = new VBox();
    box.getStyleClass().add("title-box");

    title = new Label("Mourning Ember");
    title.getStyleClass().add("title");
    lastScore = new Label("Last Score: " + receiver.getLastScore());
    lastScore.getStyleClass().add("score-label");
    highScore = new Label("High Score: " + receiver.getMaxScore());
    highScore.getStyleClass().add("score-label");

    play = new Button("Start");
    play.getStyleClass().add("start-button");
    play.setOnAction(actionEvent -> view.setGameView(true));

    author = new Label("By Alan Liu");
    author.getStyleClass().add("author");

    box.getChildren().addAll(title, lastScore, highScore, play, author);
    container.getChildren().add(box);

    this.receiver = receiver;
  }

  public void setLoading(boolean loading) {
    if(loading) {
      play.setText("Loading...");
    } else {
      play.setText("Start");
    }
  }

  public void update() {
    lastScore.setText("Last Score: " + receiver.getLastScore());
    highScore.setText("High Score: " + receiver.getMaxScore());
  }

  @Override
  public Parent render() {
    return container;
  }
}