diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-07-08 02:41:31 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-07-08 02:41:31 -0400 |
commit | ee2229339429d50afa33e2f8b9c0ee0939766290 (patch) | |
tree | a5ee54bd23c24950e9b10815f3e87605906992d8 /src/gui | |
parent | 9e1371424bdf4c31d756d686313730d4c61f7ac5 (diff) | |
download | NPEhero-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.java | 123 | ||||
-rw-r--r-- | src/gui/GameOver.java | 123 | ||||
-rw-r--r-- | src/gui/Leaderboard.java | 71 | ||||
-rw-r--r-- | src/gui/LevelDetails.java | 136 | ||||
-rw-r--r-- | src/gui/LevelSelector.java | 96 | ||||
-rw-r--r-- | src/gui/LevelSurround.java | 149 | ||||
-rw-r--r-- | src/gui/MainMenu.java | 68 | ||||
-rw-r--r-- | src/gui/Settings.java | 129 | ||||
-rw-r--r-- | src/gui/style.css | 236 |
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; */ -} - |