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.pngBinary files differ new file mode 100644 index 0000000..113907f --- /dev/null +++ b/src/assets/trees.png diff --git a/src/assets/water.png b/src/assets/water.pngBinary files differ new 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 | 
