aboutsummaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-07-08 02:41:31 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-07-08 02:41:31 -0400
commitee2229339429d50afa33e2f8b9c0ee0939766290 (patch)
treea5ee54bd23c24950e9b10815f3e87605906992d8 /src/gui
parent9e1371424bdf4c31d756d686313730d4c61f7ac5 (diff)
downloadNPEhero-ee2229339429d50afa33e2f8b9c0ee0939766290.tar.gz
NPEhero-ee2229339429d50afa33e2f8b9c0ee0939766290.tar.bz2
NPEhero-ee2229339429d50afa33e2f8b9c0ee0939766290.zip
Change project structure, embed resources into jar and remove libraries from source control
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/Driver.java123
-rw-r--r--src/gui/GameOver.java123
-rw-r--r--src/gui/Leaderboard.java71
-rw-r--r--src/gui/LevelDetails.java136
-rw-r--r--src/gui/LevelSelector.java96
-rw-r--r--src/gui/LevelSurround.java149
-rw-r--r--src/gui/MainMenu.java68
-rw-r--r--src/gui/Settings.java129
-rw-r--r--src/gui/style.css236
9 files changed, 0 insertions, 1131 deletions
diff --git a/src/gui/Driver.java b/src/gui/Driver.java
deleted file mode 100644
index b46f4c9..0000000
--- a/src/gui/Driver.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package gui;
-
-import javafx.application.Application;
-import javafx.application.Platform;
-import javafx.geometry.Side;
-import javafx.scene.Scene;
-import javafx.scene.image.Image;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyCombination;
-import javafx.scene.input.KeyEvent;
-import javafx.scene.layout.Background;
-import javafx.scene.layout.BackgroundImage;
-import javafx.scene.layout.BackgroundPosition;
-import javafx.scene.layout.BackgroundRepeat;
-import javafx.scene.layout.BackgroundSize;
-import javafx.scene.layout.Pane;
-import javafx.stage.Stage;
-import main.LevelController;
-import main.SettingsController;
-import main.SoundController;
-import java.nio.file.Paths;
-
-import devmenu.DebugMenu;
-
-
-public class Driver extends Application
-{
- public static Stage primaryStage;
- static Pane primaryPane = new Pane();
-
- public static SettingsController settingsController = new SettingsController();
- public static SoundController soundController = new SoundController();
- public static LevelController levelController = new LevelController();
- public static DebugMenu debug = new DebugMenu();
-
- /*
- * starts javafx
- */
- public static void main(String[] args)
- {
- launch(args);
- }
-
- /*
- * sets up game windows and starts controllers
- * (automatically called by javafx on start)
- */
- @Override
- public void start(Stage newPrimaryStage)
- {
- primaryStage = newPrimaryStage;
-
- Scene primaryScene = new Scene(primaryPane, 800,600);
- primaryScene.getStylesheets().add("gui/style.css");
-
- primaryStage.setScene(primaryScene);
- primaryStage.setTitle("NPE Hero");
-
-
- setMenu(new MainMenu());
- setMenuBackground();
-
- primaryStage.addEventHandler(KeyEvent.KEY_PRESSED, event -> { //full screen stuff
- if (KeyCode.F11.equals(event.getCode())) {
- primaryStage.setFullScreen(!primaryStage.isFullScreen());
- }
- });
- primaryStage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
- primaryStage.setFullScreenExitHint("");
- primaryStage.show();
- }
-
- /**
- * Replaces/adds a new pane to the primaryPane
- * @param pane the new pane
- */
- public static void setMenu(Pane pane)
- {
- if (! primaryPane.getChildren().isEmpty())
- {
- primaryPane.getChildren().remove(0);
- }
- primaryPane.getChildren().add(pane);
- pane.prefWidthProperty().bind(primaryPane.widthProperty()); //makes pane fill the window
- pane.prefHeightProperty().bind(primaryPane.heightProperty());
- primaryPane.requestFocus(); //make the pane itself focused by the keyboard naviagtion so no button is highlighted by default
- }
-
- /**
- * @return the current pane in primaryPane
- */
- public static Pane getMenu(){
- return (Pane) primaryPane.getChildren().get(0);
- }
-
- /**
- * replaces the background image with a new one
- * @param url the url of the image to set
- */
- public static void setBackground(Image image) //replaces background with a new one
- {
- primaryPane.setBackground(new Background(
- new BackgroundImage(
- image,
- BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT,
- new BackgroundPosition(Side.LEFT, 0, true, Side.BOTTOM, 0, true),
- new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, true, true, false, true)
- )));
- }
-
- public static void setMenuBackground()
- {
- setBackground(new Image(Paths.get("resources/mountains.png").toUri().toString()));
- }
-
- /**
- * quits the application
- */
- public static void quit()
- {
- Platform.exit();
- }
-}
diff --git a/src/gui/GameOver.java b/src/gui/GameOver.java
deleted file mode 100644
index 8571d20..0000000
--- a/src/gui/GameOver.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package gui;
-
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.BorderPane;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
-import javafx.scene.text.Text;
-import main.Difficulty;
-import main.Level;
-
-public class GameOver extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public GameOver(Level level, Difficulty diff, Pane lastMenu, int score2)
- {
- Text topText = new Text();
- topText.setText("Level Complete");
- topText.getStyleClass().add("t11");
-
- Text levelName = new Text();
- levelName.setText(level.getTitle());
- levelName.getStyleClass().add("t2");
-
- Text levelArtist = new Text();
- levelArtist.setText(level.getArtist()+" - "+diff.title);
- levelArtist.getStyleClass().add("t3");
-
- VBox levelDetailsBox = new VBox();
- levelDetailsBox.getChildren().addAll(levelName,levelArtist);
- levelDetailsBox.getStyleClass().add("box");
- levelDetailsBox.setPadding(new Insets(5));
-
-
- Text scoreLabel = new Text();
- scoreLabel.setText("Final score");
- scoreLabel.getStyleClass().add("t3");
-
- Text score = new Text();
- score.setText(score2+"");
- score.getStyleClass().add("t2");
- score.setStyle("-fx-font-size: 30;");
-
- VBox scoreBox = new VBox();
- scoreBox.getStyleClass().add("box");
- scoreBox.getChildren().addAll(scoreLabel,score);
- scoreBox.setPadding(new Insets(5));
-
-
- Text nameLabel = new Text();
- nameLabel.setText("Leaderboard entry");
- nameLabel.getStyleClass().add("t3");
-
- TextField name = new TextField();
- name.getStyleClass().remove("text-feild");
- name.getStyleClass().add("button");
- name.setText("name");
-
- Button save = new Button();
- save.setText("Add");
- save.setOnAction(new EventHandler<ActionEvent>() { //this is the same as the "e ->" thing but it allows more than one line to be added
- @Override
- public void handle(ActionEvent event) {
- Driver.soundController.playSfx("forward");
- save.setDisable(true);
- name.setDisable(true);
- diff.addToLeaderboard(name.getText(), score2);
- }
- });
-
- BorderPane b = new BorderPane();
- b.setRight(save);
- b.setCenter(name);
-
- VBox nameBox = new VBox();
- nameBox.getChildren().addAll(nameLabel,b);
- nameBox.getStyleClass().add("box");
- nameBox.setSpacing(5);
- nameBox.setPadding(new Insets(5));
-
-
- Button exit = new Button();
- exit.setText("Back");
- exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
- Driver.setMenu(lastMenu);
- });
-
- Button replay = new Button();
- replay.setText("Replay");
- replay.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- Driver.setMenu(new LevelSurround(level, diff, lastMenu));
- });
-
- BorderPane buttonBox = new BorderPane();
- buttonBox.setLeft(exit);
- buttonBox.setRight(replay);
-
-
- VBox centerBox = new VBox();
- centerBox.getChildren().addAll(topText,levelDetailsBox,scoreBox,nameBox,buttonBox);
- centerBox.setSpacing(10);
- centerBox.setAlignment(Pos.CENTER);
-
- HBox rootBox = new HBox();
- rootBox.getChildren().add(centerBox);
- rootBox.setAlignment(Pos.CENTER);
- rootBox.prefWidthProperty().bind(super.prefWidthProperty());
- rootBox.prefHeightProperty().bind(super.prefHeightProperty());
-
- super.getChildren().add(rootBox);
- }
-}
diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java
deleted file mode 100644
index 39df409..0000000
--- a/src/gui/Leaderboard.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package gui;
-
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableView;
-import javafx.scene.control.TableColumn.SortType;
-import javafx.scene.control.cell.PropertyValueFactory;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
-import main.Difficulty;
-import main.LeaderboardEntry;
-import main.Level;
-
-public class Leaderboard extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public Leaderboard(Level level, Difficulty diff, Pane prev)
- {
- //sets up table view: requires java bean getters, setters and constructors to work
- TableView<LeaderboardEntry> scores = new TableView<LeaderboardEntry>();
-
- TableColumn<LeaderboardEntry, String> nameCol = new TableColumn<LeaderboardEntry, String>("Name");
- TableColumn<LeaderboardEntry, String> scoreCol = new TableColumn<LeaderboardEntry, String>("Score");
- TableColumn<LeaderboardEntry, String> dateCol = new TableColumn<LeaderboardEntry, String>("Date");
-
- scores.getColumns().add(nameCol);
- scores.getColumns().add(scoreCol);
- scores.getColumns().add(dateCol);
-
- nameCol.setCellValueFactory(new PropertyValueFactory<LeaderboardEntry, String>("name"));
- scoreCol.setCellValueFactory(new PropertyValueFactory<LeaderboardEntry, String>("score"));
- dateCol.setCellValueFactory(new PropertyValueFactory<LeaderboardEntry, String>("date"));
-
- scores.setItems(diff.getLeaderboard());
-
- scores.getStyleClass().add("unselectable");
-
- scores.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
- scores.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
-
- scoreCol.setSortType(SortType.DESCENDING);
- scores.getSortOrder().add(scoreCol);
-
- Button exit = new Button();
- exit.setText("Back");
- exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
- Driver.setMenu(prev);
- });
-
- VBox centerBox = new VBox();
- centerBox.setAlignment(Pos.CENTER);
- centerBox.setSpacing(10);
- centerBox.getChildren().addAll(scores,exit);
- centerBox.setMinWidth(400);
-
- HBox rootBox = new HBox();
- rootBox.prefWidthProperty().bind(super.prefWidthProperty());
- rootBox.prefHeightProperty().bind(super.prefHeightProperty());
- rootBox.getChildren().add(centerBox);
- rootBox.setAlignment(Pos.CENTER);
-
- super.getChildren().add(rootBox);
- }
-}
diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java
deleted file mode 100644
index af55b9c..0000000
--- a/src/gui/LevelDetails.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package gui;
-
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.control.RadioButton;
-import javafx.scene.control.ScrollPane;
-import javafx.scene.control.ToggleGroup;
-import javafx.scene.image.Image;
-import javafx.scene.image.ImageView;
-import javafx.scene.layout.FlowPane;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.VBox;
-import javafx.scene.text.Text;
-import javafx.scene.text.TextAlignment;
-import javafx.scene.text.TextFlow;
-import main.Difficulty;
-import main.Level;
-
-public class LevelDetails extends VBox
-{
- /**
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- *
- * @param level: the selected level on the right side
- */
- public LevelDetails(Level level)
- {
- VBox rightBox = new VBox();
- rightBox.prefWidthProperty().bind(super.prefWidthProperty());
- rightBox.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
- rightBox.setMinWidth(350);
- rightBox.getStyleClass().add("box");
-
- Button play = new Button();
- play.setDisable(true);
- play.setText("Play");
-
- Button leaderboard = new Button();
- leaderboard.setDisable(true);
- leaderboard.setText("Leaderboard");
-
- if (level == null) //if no level is selected from the list on the left
- {
- Text desc = new Text();
- desc.setText("Select a level from the left pane");
- desc.getStyleClass().add("t3");
- desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
- desc.setTextAlignment(TextAlignment.CENTER);
-
- rightBox.setAlignment(Pos.CENTER);
- rightBox.getChildren().addAll(desc);
- }
-
- else
- {
- VBox details = new VBox();
-
- ScrollPane detailsScroll = new ScrollPane(details);
- detailsScroll.prefHeightProperty().bind(rightBox.prefHeightProperty());
- detailsScroll.prefWidthProperty().bind(rightBox.prefWidthProperty());
- detailsScroll.getStyleClass().remove("scroll-pane");
-
- Text title = new Text();
- title.setText(level.getTitle());
- title.getStyleClass().add("t1");
-
- Text artist = new Text();
- artist.setText(level.getArtist());
- artist.getStyleClass().add("t2");
-
- Text desc = new Text();
- desc.setText(level.desc);
- desc.getStyleClass().add("t3");
-
- ImageView previewView = new ImageView();
- Image preview = level.preview;
- previewView.setImage(preview);
- previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5));
- previewView.setPreserveRatio(true);
-
- FlowPane diffSelector = new FlowPane();
- diffSelector.setAlignment(Pos.CENTER);
- ToggleGroup diffToggleGroup = new ToggleGroup(); //allows only one to be selected at a time
- for (Difficulty diff : level.getValidDiffList()) //adds a button for each diff
- {
- RadioButton temp = new RadioButton();
- temp.getStyleClass().remove("radio-button"); //makes the buttons not look like a radio button and instead a normal button
- temp.getStyleClass().add("button");
- temp.setText(diff.title);
- temp.setUserData(diff); //allows the data and text to be seperate
- diffToggleGroup.getToggles().add(temp);
- diffSelector.getChildren().add(temp);
- }
- play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); //disables play button when no difficulty is selected
- play.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
- });
-
- leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
- leaderboard.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- Driver.setMenu(new Leaderboard(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
- });
-
-
- HBox diffBox = new HBox();
- diffSelector.prefWidthProperty().bind(diffBox.widthProperty());
- diffBox.getChildren().add(diffSelector);
-
- details.setSpacing(10);
- details.getChildren().addAll(new TextFlow(title), new TextFlow(artist), new TextFlow(desc), previewView, diffBox);
- detailsScroll.setFitToWidth(true);
-
- rightBox.getChildren().add(detailsScroll);
- rightBox.setPadding(new Insets(5));
- }
-
- VBox rightSide = new VBox();
- rightSide.setAlignment(Pos.CENTER_RIGHT);
- rightSide.setSpacing(10);
-
- HBox buttonBox = new HBox();
- buttonBox.getChildren().addAll(leaderboard,play);
- buttonBox.setSpacing(5);
- buttonBox.setAlignment(Pos.CENTER_RIGHT);
-
- rightSide.getChildren().addAll(rightBox,buttonBox);
-
- super.setAlignment(Pos.CENTER_RIGHT);
- super.getChildren().add(rightSide);
- }
-}
diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java
deleted file mode 100644
index 6fd6aca..0000000
--- a/src/gui/LevelSelector.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package gui;
-
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableView;
-import javafx.scene.control.cell.PropertyValueFactory;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
-import main.Level;
-import main.LevelController;
-
-public class LevelSelector extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public LevelSelector()
- {
- //sets up table view: requires special getters, setters and constructors to work
- TableView<Level> levels = new TableView<Level>();
-
- TableColumn<Level,String> titleCol = new TableColumn<Level,String>("Title");
- TableColumn<Level,String> artistCol = new TableColumn<Level,String>("Artist");
-
- levels.getColumns().add(titleCol);
- levels.getColumns().add(artistCol);
-
- titleCol.setCellValueFactory(new PropertyValueFactory<Level, String>("title"));
- artistCol.setCellValueFactory(new PropertyValueFactory<Level, String>("artist"));
-
- levels.setItems(LevelController.getValidLevelList());
-
- levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
- levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
- levels.setMinWidth(300);
-
-
- Button exit = new Button();
- exit.setText("Back");
- exit.setOnAction(e -> {Driver.setMenu(new MainMenu());
- Driver.soundController.playSfx("backward");
- });
-
- VBox leftBox = new VBox();
- leftBox.setAlignment(Pos.CENTER_LEFT);
- leftBox.setSpacing(10);
- leftBox.getChildren().addAll(levels,exit);
-
- Pane rightBox = new Pane();
- addDetails(rightBox, levels);
-
-
- HBox rootBox = new HBox();
- rootBox.prefWidthProperty().bind(super.prefWidthProperty());
- rootBox.prefHeightProperty().bind(super.prefHeightProperty());
- rootBox.getChildren().addAll(leftBox, rightBox);
- rootBox.setAlignment(Pos.CENTER);
- rootBox.setSpacing(10);
-
- levels.getStyleClass().remove("list-view");
- levels.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Level>() { //listens for change in selected item of the list
-
- @Override
- public void changed(ObservableValue<? extends Level> arg0, Level arg1, Level arg2) {
- addDetails(rightBox, levels);
- }
- });
- super.getChildren().add(rootBox);
- }
-
- /**
- * adds corresponding level details pane to the right side
- * @param rightBox
- * @param levels
- */
- private void addDetails(Pane rightBox, TableView<Level> levels)
- {
- VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem());
- if (! rightBox.getChildren().isEmpty())
- {
- rightBox.getChildren().remove(0);
- }
- rightBox.getChildren().add(details);
- details.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.37));
- details.prefHeightProperty().bind(super.prefHeightProperty());
- details.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.37));
- details.maxHeightProperty().bind(super.prefHeightProperty());
- }
-
-}
diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java
deleted file mode 100644
index dcf8a10..0000000
--- a/src/gui/LevelSurround.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package gui;
-
-import gameplay.SongPlayer;
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.layout.AnchorPane;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.StackPane;
-import javafx.scene.layout.VBox;
-import javafx.scene.text.Text;
-import main.Difficulty;
-import main.Level;
-import main.ScoreController;
-
-public class LevelSurround extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public LevelSurround(Level level, Difficulty difficulty, Pane prev)
- {
- ScoreController sc = new ScoreController();
- SongPlayer game = new SongPlayer(level, difficulty, prev, sc);
-
- Button exit = new Button();
- exit.setText("Back");
- exit.setOnAction(e -> {
- Driver.setMenu(prev);
- Driver.soundController.playSfx("backward");
- game.cancel();
- });
-
- HBox buttonBox = new HBox();
- buttonBox.getChildren().addAll(exit);
- buttonBox.setAlignment(Pos.TOP_LEFT);
- buttonBox.setSpacing(10);
-
- Text title = new Text();
- title.setText(level.getTitle());
- title.getStyleClass().add("t2");
-
- Text artist = new Text();
- artist.setText(level.getArtist()+" - "+difficulty.title);
- artist.getStyleClass().add("t3");
-
- VBox titleTextBox = new VBox();
- titleTextBox.setAlignment(Pos.TOP_RIGHT);
- titleTextBox.getChildren().addAll(title, artist);
- titleTextBox.getStyleClass().add("box");
- titleTextBox.setPadding(new Insets(10));
-
- AnchorPane topBar = new AnchorPane();
- topBar.getChildren().addAll(buttonBox,titleTextBox);
- topBar.setLeftAnchor(buttonBox, 0.0);
- topBar.setRightAnchor(titleTextBox, 0.0);
- topBar.setTopAnchor(buttonBox, 0.0);
- topBar.setTopAnchor(titleTextBox, 0.0);
- topBar.setPadding(new Insets(10));
-
-
- Text scoreLabel = new Text();
- scoreLabel.setText("Score:");
- scoreLabel.getStyleClass().add("t3");
-
- Text scoreDisplay = new Text();
- scoreDisplay.textProperty().bind(sc.scoreProperty);
- scoreDisplay.getStyleClass().add("t1");
-
- VBox scoreTextBox = new VBox();
- scoreTextBox.setAlignment(Pos.BOTTOM_LEFT);
- scoreTextBox.getChildren().addAll(scoreLabel,scoreDisplay);
- scoreTextBox.setPadding(new Insets(10));
- scoreTextBox.getStyleClass().add("box");
- scoreTextBox.minWidthProperty().bind(scoreTextBox.heightProperty());
-
- AnchorPane scoreBox = new AnchorPane();
- scoreBox.getChildren().add(scoreTextBox);
- scoreBox.setLeftAnchor(scoreTextBox, 0.0);
- scoreBox.setBottomAnchor(scoreTextBox, 0.0);
- scoreBox.setPadding(new Insets(10));
-
- Text comboLabel = new Text();
- comboLabel.setText("Combo:");
- comboLabel.getStyleClass().add("t3");
-
- Text comboDisplay = new Text();
- comboDisplay.textProperty().bind(sc.comboProperty);
- comboDisplay.getStyleClass().add("t1");
-
- VBox comboTextBox = new VBox();
- comboTextBox.setAlignment(Pos.BOTTOM_RIGHT);
- comboTextBox.getChildren().addAll(comboLabel,comboDisplay);
- comboTextBox.setPadding(new Insets(10));
- comboTextBox.getStyleClass().add("box");
- comboTextBox.minWidthProperty().bind(comboTextBox.heightProperty());
-
- AnchorPane comboBox = new AnchorPane();
- comboBox.getChildren().add(comboTextBox);
- comboBox.setRightAnchor(comboTextBox, 0.0);
- comboBox.setBottomAnchor(comboTextBox, 0.0);
- comboBox.setPadding(new Insets(10));
-
- game.minWidthProperty().bind(super.prefHeightProperty().multiply(0.66));
- game.minHeightProperty().bind(super.prefHeightProperty());
- game.getStyleClass().add("box");
-
-
- comboBox.minWidthProperty().bind(super.prefWidthProperty().subtract(game.minWidthProperty()).divide(2));
- scoreBox.minWidthProperty().bind(super.prefWidthProperty().subtract(game.minWidthProperty()).divide(2));
-
- HBox centerBox = new HBox();
- centerBox.getChildren().addAll(comboBox, game, scoreBox);
- centerBox.setAlignment(Pos.BOTTOM_CENTER);
-
- StackPane root = new StackPane();
- root.getChildren().addAll(centerBox, topBar);
-
- super.getChildren().add(root);
- root.prefWidthProperty().bind(super.prefWidthProperty());
- root.prefHeightProperty().bind(super.prefHeightProperty());
-
- //for debug menu
- Button addScore = new Button();
- addScore.setText(level.getTitle() + " addscore");
- addScore.setOnAction(e -> sc.setScore(sc.getScore()+1));
- Driver.debug.addButton(addScore);
-
- Button addCombo = new Button();
- addCombo.setText(level.getTitle() + " addcombo");
- addCombo.setOnAction(e -> sc.setCombo(sc.getCombo()+1));
- Driver.debug.addButton(addCombo);
-
- Button printD = new Button();
- printD.setText(level.getTitle() + " print debug");
- printD.setOnAction(e -> sc.print());
- Driver.debug.addButton(printD);
-
- Button testfinish = new Button();
- testfinish.setText(level.getTitle() + "launch game end");
- testfinish.setOnAction(e -> Driver.setMenu(new GameOver(level, difficulty, prev, sc.getScore())));
- Driver.debug.addButton(testfinish);
-
- game.start();
- }
-} \ No newline at end of file
diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java
deleted file mode 100644
index 84a7508..0000000
--- a/src/gui/MainMenu.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package gui;
-
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.effect.BlurType;
-import javafx.scene.effect.DropShadow;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
-import javafx.scene.paint.Color;
-import javafx.scene.text.Text;
-
-
-public class MainMenu extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public MainMenu()
- {
- DropShadow dropShadow = new DropShadow();
- dropShadow.setRadius(50.0);
- dropShadow.setColor(Color.WHITE);
- dropShadow.setBlurType(BlurType.GAUSSIAN);
-
- Text title = new Text();
- title.setText("NPE Hero");
- title.getStyleClass().add("t0");
- title.setEffect(dropShadow);
-
- Button play = new Button();
- play.setText("Play");
- play.setOnAction(e -> {Driver.setMenu(new LevelSelector());
- Driver.soundController.playSfx("forward");
- });
-
- Button settings = new Button();
- settings.setText("Settings");
- settings.setOnAction(e -> {Driver.setMenu(new Settings());
- Driver.soundController.playSfx("forward");
- });
-
- Button exit = new Button();
- exit.setText("Quit");
- exit.setOnAction(e -> {Driver.quit();
- Driver.soundController.playSfx("backward");
- });
-
- VBox buttonBox = new VBox();
- buttonBox.getChildren().addAll(play, settings, exit);
- buttonBox.setAlignment(Pos.CENTER);
- buttonBox.setSpacing(10);
-
- VBox centerBox = new VBox();
- centerBox.setAlignment(Pos.CENTER);
- centerBox.getChildren().addAll(title, buttonBox);
- centerBox.setSpacing(10);
-
- VBox rootBox = new VBox();
- rootBox.prefWidthProperty().bind(super.prefWidthProperty());
- rootBox.prefHeightProperty().bind(super.prefHeightProperty());
- rootBox.setAlignment(Pos.CENTER);
- rootBox.getChildren().add(centerBox);
-
- super.getChildren().add(rootBox);
- }
-}
diff --git a/src/gui/Settings.java b/src/gui/Settings.java
deleted file mode 100644
index 663353a..0000000
--- a/src/gui/Settings.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package gui;
-
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.control.Button;
-import javafx.scene.control.Slider;
-import javafx.scene.control.ToggleButton;
-import javafx.scene.layout.BorderPane;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
-import javafx.scene.text.Text;
-
-public class Settings extends Pane
-{
- /*
- * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
- * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
- * style classes are defined in the style.css file.
- */
- public Settings()
- {
- Text musicText = new Text();
- musicText.setText("Music Volume");
- musicText.getStyleClass().add("t3");
-
- Slider musicSlider = new Slider();
- musicSlider.valueProperty().bindBidirectional(Driver.settingsController.musicVol);
- musicSlider.setMin(0.0);
- musicSlider.setMax(1.0);
-
- VBox musicBox = new VBox();
- musicBox.getChildren().addAll(musicText, musicSlider);
- musicBox.getStyleClass().add("box");
- musicBox.setPadding(new Insets(10));
-
-
- Text SFXText = new Text();
- SFXText.setText("Sound Effects Volume");
- SFXText.getStyleClass().add("t3");
-
- Slider SFXSlider = new Slider();
- SFXSlider.valueProperty().bindBidirectional(Driver.settingsController.effectsVol);
- SFXSlider.setMin(0.0);
- SFXSlider.setMax(1.0);
-
- VBox SFXBox = new VBox();
- SFXBox.getChildren().addAll(SFXText, SFXSlider);
- SFXBox.getStyleClass().add("box");
- SFXBox.setPadding(new Insets(10));
-
-
- Text fullText = new Text();
- fullText.setText("Fullscreen mode");
- fullText.getStyleClass().add("t3");
-
- Button fullscreen = new Button();
- fullscreen.setText("Toggle (F11)");
- fullscreen.getStyleClass().remove("toggle-button");
- fullscreen.getStyleClass().add("button");
- fullscreen.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen());
- });
-
- VBox fullBox = new VBox();
- fullBox.getChildren().addAll(fullText,fullscreen);
- fullBox.getStyleClass().add("box");
- fullBox.setPadding(new Insets(10));
-
-
- Text devLabel = new Text("Advanced");
- devLabel.getStyleClass().add("t3");
-
- Button levelEdit = new Button("Level Utility");
- levelEdit.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- new devmenu.LevelList();
- });
-
- Button devMenu = new Button();
- devMenu.setText("Debug Menu");
- devMenu.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
- Driver.debug.show();
- });
-
- VBox devBox = new VBox();
- devBox.getStyleClass().add("box");
- devBox.getChildren().addAll(devLabel,levelEdit,devMenu);
- devBox.setVisible(false);
- devBox.setManaged(false);
- devBox.setPadding(new Insets(10));
-
- ToggleButton advanced = new ToggleButton("Advanced");
- advanced.getStyleClass().remove("toggle-button");
- advanced.getStyleClass().add("button");
- advanced.selectedProperty().bindBidirectional(devBox.managedProperty());
- advanced.selectedProperty().bindBidirectional(devBox.visibleProperty());
-
- Button exit = new Button();
- exit.setText("Back");
- exit.setOnAction(e -> {
- Driver.settingsController.write();
- Driver.soundController.playSfx("backward");
- Driver.setMenu(new MainMenu());
- });
-
- BorderPane buttonBox = new BorderPane();
- buttonBox.setLeft(exit);
- buttonBox.setRight(advanced);
-
-
- VBox options = new VBox();
- options.setSpacing(10);
- options.setAlignment(Pos.CENTER);
- options.getChildren().addAll(musicBox,SFXBox,fullBox,devBox,buttonBox);
- options.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
- options.setMinWidth(400);
- options.prefHeightProperty().bind(super.prefHeightProperty());
-
- HBox rootBox = new HBox();
- rootBox.prefWidthProperty().bind(super.prefWidthProperty());
- rootBox.prefHeightProperty().bind(super.prefHeightProperty());
- rootBox.getChildren().add(options);
- rootBox.setAlignment(Pos.CENTER);
- super.getChildren().add(rootBox);
- }
-}
diff --git a/src/gui/style.css b/src/gui/style.css
deleted file mode 100644
index dd1de55..0000000
--- a/src/gui/style.css
+++ /dev/null
@@ -1,236 +0,0 @@
-@import url('https://fonts.googleapis.com/css2?family=Space+Mono&display=swap');
-
-/* global */
-
-.root{
- -fx-font-family: "space mono";
-}
-
-/* button */
-
-.button {
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-text-fill: white;
- -fx-border-color: transparent;
- -fx-border-width: 3;
- -fx-border-radius: 5;
- -fx-font-size: 25;
- -fx-background-radius: 5;
-}
-
-.button:hover {
- -fx-background-color: rgb(50, 50, 50, 0.5);
-}
-
-.button:focused {
- -fx-background-color: rgb(50, 50, 50, 0.5);
- -fx-border-color: rgb(255, 255, 255);
-}
-
-.button:selected {
- -fx-background-color: rgb(255, 255, 255);
- -fx-text-fill: rgb(0, 0, 0);
-
-}
-
-.button:pressed{
- -fx-background-color: rgb(231, 231, 231);
- -fx-border-color: transparent;
- -fx-text-fill: rgb(0, 0, 0);
-}
-
-/* table */
-
-TableView {
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-background-radius: 5;
- -fx-padding: 5;
-}
-
-.table-view .column-header-background .filler {
- -fx-background-color: transparent;
-}
-
-.table-view .table-cell{
- -fx-border-color: transparent;
-}
-
-.table-view .column-header-background{
- -fx-background-color: transparent;
-}
-
-.table-cell {
- -fx-padding: .5em;
-}
-
-.table-view .column-header {
- -fx-text-background-color: rgb(168, 168, 168);
- -fx-background-color: transparent;
-}
-
-.table-row-cell {
- -fx-cell-size: 40;
- -fx-background-color: transparent;
- -fx-background-radius: 3;
- -fx-text-background-color: rgb(255, 255, 255);
- /* -fx-border-width: 3; */
- /* -fx-border-radius: 5; */
- /* -fx-border-color: transparent; */
-}
-
-.table-row-cell:hover {
- -fx-background-color: rgba(100, 100, 100, 0.5);
-
-}
-
-TableView:focused {
- -fx-effect: null;
-}
-
-TableView:focused .list-cell:focused {
- -fx-background-color: rgb(50, 50, 50, 0.5);
- /* -fx-border-color: rgb(255, 255, 255); */
-}
-
-.table-view .corner {
- -fx-background-color: transparent;
- -fx-border-color: transparent;
-}
-
-.table-row-cell:selected {
- -fx-background-color: rgb(255, 255, 255);
- -fx-text-background-color: rgb(0, 0, 0);
-}
-
-.table-row-cell:pressed {
- -fx-background-color: rgb(231, 231, 231);
- /* -fx-border-color: transparent; */
-}
-
-.table-row-cell:empty {
- -fx-background-color: transparent;
- /* -fx-border-color: transparent; */
- -fx-text-background-color: white;
-}
-
-.unselectable .table-row-cell{
- -fx-background-color: transparent;
- /* -fx-border-color: transparent; */
- -fx-text-background-color: white;
-}
-
-/* slider */
-
-Slider {
- -fx-padding: 1em;
-}
-
-.track {
-
- -fx-padding: 3;
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-background-radius: 5;
-}
-
-.thumb {
- -fx-pref-height: 30;
- -fx-prefer-width: 30;
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-size: 25;
- -fx-border-radius: 5;
- -fx-border-color: rgb(231, 231, 231);
- -fx-border-width: 3;
-}
-
-.thumb:hover {
- -fx-background-color: rgb(50, 50, 50, 0.5);
-}
-
-Slider:focused .thumb{
- -fx-background-color: rgb(255,255,255);
- -fx-border-color: white;
-}
-
-.thumb:pressed {
- -fx-background-color: rgb(231, 231, 231);
- -fx-border-color: rgb(231, 231, 231);
-}
-
-/* scroll bars */
-
-.scroll-bar:horizontal ,
-.scroll-bar:vertical{
- -fx-font-size: 5px;
- -fx-background-color :transparent;
- -fx-border-color :transparent;
- -fx-background-radius : 0.0em;
- -fx-border-radius :2.0em;
-}
-
-.increment-button ,.decrement-button {
- -fx-background-color:transparent;
- -fx-border-color:transparent;
-}
-
-.scroll-bar:horizontal .track ,
-.scroll-bar:vertical .track{
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-background-radius: 5em;
-}
-
-.scroll-bar:horizontal .thumb,
-.scroll-bar:vertical .thumb {
- -fx-background-color:white;
- -fx-background-radius: 5em;
- -fx-border-width: 0;
-
-}
-
-.scroll-bar .thumb:pressed {
- -fx-background-color: rgb(231, 231, 231);
-}
-
-/* text */
-
-.t0 {
- -fx-font-size: 125;
- -fx-fill: black;
-}
-
-.t1 {
- -fx-font-size: 50;
- -fx-fill: white;
-}
-
-.t11 {
- -fx-font-size: 50;
- -fx-fill: black;
-}
-
-.t2 {
- -fx-font-size: 30;
- -fx-fill: white;
-}
-
-.t3 {
- -fx-fill: white;
-}
-
-/* text box */
-
-.box {
- -fx-background-radius: 5;
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-text-fill: white;
-}
-
-/* debug */
-
-.debug {
- /* -fx-background-radius: 5; */
- -fx-background-color: rgb(255, 0, 0);
- /* -fx-border-color: red; */
- /* -fx-text-fill: white; */
- /* -fx-border-width: 20; */
-}
-