aboutsummaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-05-12 02:03:30 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-05-12 02:03:30 -0400
commit7f4070564af6cc9ba1eb79f3730eb0213eea3b11 (patch)
tree3e3b65e3335c973bc8c1f05827237146c0a2e649 /src/gui
parentad89ab07efd535dc0df280e982139db774558503 (diff)
downloadNPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.tar.gz
NPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.tar.bz2
NPEhero-7f4070564af6cc9ba1eb79f3730eb0213eea3b11.zip
big gui stuff
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/Driver.java55
-rw-r--r--src/gui/Leaderboard.java27
-rw-r--r--src/gui/Level.java1
-rw-r--r--src/gui/LevelSelector.java20
-rw-r--r--src/gui/MainMenu.java81
-rw-r--r--src/gui/Settings.java29
-rw-r--r--src/gui/application.css0
-rw-r--r--src/gui/style.css21
8 files changed, 143 insertions, 91 deletions
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