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; } }