diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-05-12 02:03:30 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-05-12 02:03:30 -0400 |
commit | 7f4070564af6cc9ba1eb79f3730eb0213eea3b11 (patch) | |
tree | 3e3b65e3335c973bc8c1f05827237146c0a2e649 | |
parent | ad89ab07efd535dc0df280e982139db774558503 (diff) | |
download | NPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.tar.gz NPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.tar.bz2 NPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.zip |
big gui stuff
-rw-r--r-- | .vscode/launch.json | 8 | ||||
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | src/assets/trees.png | bin | 0 -> 1405559 bytes | |||
-rw-r--r-- | src/assets/water.png | bin | 0 -> 1009759 bytes | |||
-rw-r--r-- | src/gui/Driver.java | 55 | ||||
-rw-r--r-- | src/gui/Leaderboard.java | 27 | ||||
-rw-r--r-- | src/gui/Level.java | 1 | ||||
-rw-r--r-- | src/gui/LevelSelector.java | 20 | ||||
-rw-r--r-- | src/gui/MainMenu.java | 81 | ||||
-rw-r--r-- | src/gui/Settings.java | 29 | ||||
-rw-r--r-- | src/gui/application.css | 0 | ||||
-rw-r--r-- | src/gui/style.css | 21 | ||||
-rw-r--r-- | src/main/JFXaudioPlayer.java | 16 |
13 files changed, 170 insertions, 91 deletions
diff --git a/.vscode/launch.json b/.vscode/launch.json index d47897b..3975b70 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,6 +6,14 @@ "configurations": [ { "type": "java", + "name": "Driver2", + "request": "launch", + "mainClass": "gui.Driver2", + "projectName": "GuitarHero", + "vmArgs": "--module-path lib/linux --add-modules javafx.controls,javafx.fxml" + }, + { + "type": "java", "name": "Driver", "request": "launch", "mainClass": "gui.Driver", @@ -4,6 +4,9 @@ [JavaFX docs (with search)](https://openjfx.io/javadoc/15) +javafx guides (really helpful website): +[edencoding.com](https://edencoding.com/javafx-layouts/) + # Installation ### VM arguements diff --git a/src/assets/trees.png b/src/assets/trees.png Binary files differnew file mode 100644 index 0000000..113907f --- /dev/null +++ b/src/assets/trees.png diff --git a/src/assets/water.png b/src/assets/water.png Binary files differnew file mode 100644 index 0000000..0113819 --- /dev/null +++ b/src/assets/water.png diff --git a/src/gui/Driver.java b/src/gui/Driver.java index a01498e..f9449cd 100644 --- a/src/gui/Driver.java +++ b/src/gui/Driver.java @@ -1,10 +1,25 @@ package gui; +import java.util.HashMap; + import javafx.application.Application; +import javafx.geometry.Side; +import javafx.scene.Scene; +import javafx.scene.image.Image; +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; public class Driver extends Application { + + static HashMap<String,Pane> menus = new HashMap<String,Pane>(); + static Pane primaryPane = new Pane(); + public static void main(String[] args) { launch(args); @@ -13,7 +28,45 @@ public class Driver extends Application @Override public void start(Stage primaryStage) { - primaryStage.setScene(new MainMenu(primaryStage)); + menus.put("MainMenu", new MainMenu()); + menus.put("LevelSelector", new LevelSelector()); + menus.put("Settings", new Settings()); + menus.put("Leaderboard", new Leaderboard()); + + for (Pane value : menus.values()) { + value.minWidthProperty().bind(primaryStage.widthProperty()); + value.minHeightProperty().bind(primaryStage.heightProperty()); + } + + primaryPane.getChildren().add(menus.get("MainMenu")); + primaryPane.minWidthProperty().bind(primaryStage.widthProperty()); + primaryPane.minHeightProperty().bind(primaryStage.heightProperty()); + setBackground("assets/water.png"); + + Scene primaryScene = new Scene(primaryPane, 800, 600); + primaryScene.getStylesheets().add("gui/style.css"); + + primaryStage.setScene(primaryScene); + primaryStage.setTitle("NPE Hero"); primaryStage.show(); + primaryStage.setFullScreen(true); + } + + + public static void switchMenu(String name) + { + primaryPane.getChildren().remove(0); + primaryPane.getChildren().add(menus.get(name)); + } + + public static void setBackground(String url) + { + primaryPane.setBackground(new Background( + new BackgroundImage( + new Image(url), + 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) + ))); } } diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java index e9268bc..598b6aa 100644 --- a/src/gui/Leaderboard.java +++ b/src/gui/Leaderboard.java @@ -5,41 +5,28 @@ import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; -import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ListView; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; -import javafx.stage.Stage; -public class Leaderboard extends Scene +public class Leaderboard extends Pane { - private static Pane root = new Pane(); - public Leaderboard(Stage primaryStage) + public Leaderboard() { - super(root,800,600); - primaryStage.setTitle("NPE Hero - Leaderboard"); - ListView<String> scores = new ListView<String>(); ObservableList<String> scoreList= FXCollections.observableArrayList ("Test Score 1", "Test Score 2", "Test Score 3", "Test Score 4"); scores.setItems(scoreList); Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - primaryStage.setScene(new MainMenu(primaryStage)); - } - }); - + exit.setOnAction(e -> Driver.switchMenu("MainMenu")); + VBox centerMenu3 = new VBox(); - centerMenu3.minWidthProperty().bind(primaryStage.widthProperty()); - centerMenu3.minHeightProperty().bind(primaryStage.heightProperty()); + centerMenu3.minWidthProperty().bind(super.widthProperty()); + centerMenu3.minHeightProperty().bind(super.heightProperty()); centerMenu3.setAlignment(Pos.CENTER); centerMenu3.getChildren().addAll(scores,exit); - root.getChildren().add(centerMenu3); + super.getChildren().add(centerMenu3); } } diff --git a/src/gui/Level.java b/src/gui/Level.java index 993b631..8f98903 100644 --- a/src/gui/Level.java +++ b/src/gui/Level.java @@ -23,6 +23,7 @@ import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; +// will eventually extend pane public class Level extends Application { public static void main(String[] args) { launch(args); diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java index 25d1ed2..a84444b 100644 --- a/src/gui/LevelSelector.java +++ b/src/gui/LevelSelector.java @@ -4,23 +4,25 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Pos; import javafx.scene.Scene; +import javafx.scene.control.Button; import javafx.scene.control.ListView; +import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.Stage; -public class LevelSelector extends Scene -{ - private static VBox centerMenu2 = new VBox(); - - public LevelSelector(Stage primaryStage) +public class LevelSelector extends Pane +{ + public LevelSelector() { - super(centerMenu2,800,600); - primaryStage.setTitle("NPE Hero - Level Selector"); ListView<String> levels = new ListView<String>(); ObservableList<String> levelList= FXCollections.observableArrayList ("Test Level 1", "Test Level 2", "Test Level 3", "Test Level 4"); levels.setItems(levelList); - centerMenu2.setAlignment(Pos.CENTER); - centerMenu2.getChildren().add(levels); + //super.setAlignment(Pos.CENTER); + Button exit = new Button(); + exit.setText("Exit"); + exit.setOnAction(e -> Driver.switchMenu("MainMenu")); + + super.getChildren().addAll(levels,exit); } } diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java index 0c7ab7f..3ad91ad 100644 --- a/src/gui/MainMenu.java +++ b/src/gui/MainMenu.java @@ -3,66 +3,69 @@ package gui; import javafx.event.EventHandler; import javafx.event.ActionEvent; import javafx.geometry.Pos; -import javafx.scene.Scene; import javafx.scene.control.Button; +import javafx.scene.effect.BlurType; +import javafx.scene.effect.DropShadow; +import javafx.scene.layout.Border; +import javafx.scene.layout.BorderStroke; +import javafx.scene.layout.BorderStrokeStyle; +import javafx.scene.layout.BorderWidths; +import javafx.scene.layout.CornerRadii; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; -import javafx.stage.Stage; -public class MainMenu extends Scene +public class MainMenu extends Pane { - private static Pane root = new Pane(); - public MainMenu(Stage primaryStage) + public MainMenu() { - super(root,800,600); - primaryStage.setTitle("NPE Hero - Main menu"); + 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.setFont(new Font(48)); - //set color + title.setFont(new Font(125)); + title.setEffect(dropShadow); + title.setFill(Color.WHITE); Button play = new Button(); play.setText("Play"); - play.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - primaryStage.setScene(new LevelSelector(primaryStage)); - } - }); + play.setOnAction(e -> Driver.switchMenu("LevelSelector")); Button settings = new Button(); settings.setText("Settings"); - settings.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - primaryStage.setScene(new Settings(primaryStage)); - } - }); + settings.setOnAction(e -> Driver.switchMenu("Settings")); Button leaderboard = new Button(); leaderboard.setText("Leaderboard"); - leaderboard.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - primaryStage.setScene(new Leaderboard(primaryStage)); - } - }); + leaderboard.setOnAction(e -> Driver.switchMenu("Leaderboard")); - VBox centerMenu = new VBox(); - centerMenu.getChildren().addAll(title, play, settings, leaderboard); - centerMenu.minWidthProperty().bind(primaryStage.widthProperty()); - centerMenu.minHeightProperty().bind(primaryStage.heightProperty()); - centerMenu.setAlignment(Pos.CENTER); + //Border border = new Border(new BorderStroke(Color.WHITE, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT)); - root.getChildren().add(centerMenu); + VBox buttonBox = new VBox(); + buttonBox.getChildren().addAll(play, settings, leaderboard); + buttonBox.setAlignment(Pos.CENTER); + buttonBox.setSpacing(10); + //buttonBox.setBorder(border); + + VBox centerBox = new VBox(); + centerBox.setAlignment(Pos.CENTER); + centerBox.getChildren().addAll(title, buttonBox); + centerBox.setSpacing(10); + //centerBox.setBorder(border); + + VBox rootBox = new VBox(); + rootBox.minWidthProperty().bind(super.widthProperty()); + rootBox.minHeightProperty().bind(super.heightProperty()); + rootBox.setAlignment(Pos.CENTER); + rootBox.getChildren().add(centerBox); + //rootBox.setBorder(border); + super.getChildren().add(rootBox); + } } diff --git a/src/gui/Settings.java b/src/gui/Settings.java index ea5ce7e..94c2a89 100644 --- a/src/gui/Settings.java +++ b/src/gui/Settings.java @@ -3,24 +3,16 @@ package gui; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; -import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Slider; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.text.Text; -import javafx.stage.Stage; -public class Settings extends Scene +public class Settings extends Pane { - private static Pane primaryPane = new Pane(); - - public Settings(Stage primaryStage) + public Settings() { - super(primaryPane, 800, 600); - primaryStage.setTitle("NPE Hero - Settings"); - Scene root = super.getRoot().getScene(); - Text t1 = new Text(); t1.setText("Music Volume"); @@ -42,27 +34,20 @@ public class Settings extends Scene @Override public void handle(ActionEvent event) { - System.out.println("not yet implimented"); + Driver.setBackground("assets/trees.png"); } }); Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - primaryStage.setScene(root); - } - }); + exit.setOnAction(e -> Driver.switchMenu("MainMenu")); VBox options = new VBox(); options.setAlignment(Pos.CENTER); options.getChildren().addAll(t1,musicVol,t2,sfxVol,devMenu,exit); - options.minWidthProperty().bind(primaryStage.widthProperty()); - options.minHeightProperty().bind(primaryStage.heightProperty()); - primaryPane.getChildren().add(options); + options.minWidthProperty().bind(super.widthProperty()); + options.minHeightProperty().bind(super.heightProperty()); + super.getChildren().add(options); } } diff --git a/src/gui/application.css b/src/gui/application.css deleted file mode 100644 index e69de29..0000000 --- a/src/gui/application.css +++ /dev/null diff --git a/src/gui/style.css b/src/gui/style.css new file mode 100644 index 0000000..3e18f9d --- /dev/null +++ b/src/gui/style.css @@ -0,0 +1,21 @@ +Button { + -fx-background-color: rgba(0, 0, 0, 0.5); + -fx-text-fill: white; + -fx-padding: .5em; + -fx-font-size: 25; + -fx-background-radius: 10; +} + +Button:hover { + -fx-background-color: rgb(255, 255, 255); + -fx-text-fill: rgb(0, 0, 0); +} + +Button:pressed { + -fx-background-color: rgb(231, 231, 231); + -fx-text-fill: rgb(0, 0, 0); +} + +.pad { + -fx-padding: 1em; +}
\ No newline at end of file diff --git a/src/main/JFXaudioPlayer.java b/src/main/JFXaudioPlayer.java new file mode 100644 index 0000000..0a2162d --- /dev/null +++ b/src/main/JFXaudioPlayer.java @@ -0,0 +1,16 @@ +package main; + +import java.io.File; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; + +public class JFXaudioPlayer { + public static void main(String[] args) + { + String musicFile = "EXAMPLE.mp3"; // For example + Media sound = new Media(new File(musicFile).toURI().toString()); + MediaPlayer mediaPlayer = new MediaPlayer(sound); + mediaPlayer.play(); + mediaPlayer.stop(); + } +}
\ No newline at end of file |