aboutsummaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-05-14 01:46:56 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-05-14 01:46:56 -0400
commit9568ea5118b9100b3375a6bd2153042506b0d5d1 (patch)
tree0e8ea5d267677bfc914b52ced330022ecd7efce9 /src/gui
parent054ff93a8e5bf51988f0324619ae4c95249f9556 (diff)
downloadNPEhero-9568ea5118b9100b3375a6bd2153042506b0d5d1.tar.gz
NPEhero-9568ea5118b9100b3375a6bd2153042506b0d5d1.tar.bz2
NPEhero-9568ea5118b9100b3375a6bd2153042506b0d5d1.zip
Finish css and menus
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/Driver.java18
-rw-r--r--src/gui/Leaderboard.java26
-rw-r--r--src/gui/Level.java6
-rw-r--r--src/gui/LevelSelector.java62
-rw-r--r--src/gui/MainMenu.java20
-rw-r--r--src/gui/Settings.java29
-rw-r--r--src/gui/style.css78
7 files changed, 177 insertions, 62 deletions
diff --git a/src/gui/Driver.java b/src/gui/Driver.java
index f9449cd..77fe0b0 100644
--- a/src/gui/Driver.java
+++ b/src/gui/Driver.java
@@ -38,25 +38,27 @@ public class Driver extends Application
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");
+
+ setMenu("MainMenu");
+ setBackground("assets/water.png");
+
primaryStage.show();
- primaryStage.setFullScreen(true);
}
- public static void switchMenu(String name)
+ public static void setMenu(String name)
{
- primaryPane.getChildren().remove(0);
+ if (! primaryPane.getChildren().isEmpty())
+ {
+ primaryPane.getChildren().remove(0);
+ }
primaryPane.getChildren().add(menus.get(name));
+ primaryPane.requestFocus();
}
public static void setBackground(String url)
diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java
index 598b6aa..9580a5f 100644
--- a/src/gui/Leaderboard.java
+++ b/src/gui/Leaderboard.java
@@ -1,12 +1,12 @@
package gui;
+
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
+import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
@@ -17,16 +17,24 @@ public class Leaderboard extends Pane
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);
+ scores.minWidthProperty().bind(super.widthProperty().multiply(0.25));
+ scores.minHeightProperty().bind(super.heightProperty().multiply(0.75));
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.switchMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu("MainMenu"));
+
+ VBox centerBox = new VBox();
+ centerBox.setAlignment(Pos.CENTER);
+ centerBox.setSpacing(10);
+ centerBox.getChildren().addAll(scores,exit);
+
+ HBox rootBox = new HBox();
+ rootBox.minWidthProperty().bind(super.widthProperty());
+ rootBox.minHeightProperty().bind(super.heightProperty());
+ rootBox.getChildren().add(centerBox);
+ rootBox.setAlignment(Pos.CENTER);
- VBox centerMenu3 = new VBox();
- centerMenu3.minWidthProperty().bind(super.widthProperty());
- centerMenu3.minHeightProperty().bind(super.heightProperty());
- centerMenu3.setAlignment(Pos.CENTER);
- centerMenu3.getChildren().addAll(scores,exit);
- super.getChildren().add(centerMenu3);
+ super.getChildren().add(rootBox);
}
}
diff --git a/src/gui/Level.java b/src/gui/Level.java
index 8f98903..ecb741d 100644
--- a/src/gui/Level.java
+++ b/src/gui/Level.java
@@ -8,19 +8,13 @@ import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.BlurType;
import javafx.scene.effect.DropShadow;
-import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
-import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
-import javafx.scene.shape.Rectangle;
-import javafx.scene.text.Font;
-import javafx.scene.text.FontWeight;
-import javafx.scene.text.Text;
import javafx.stage.Stage;
// will eventually extend pane
diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java
index a84444b..e0ad663 100644
--- a/src/gui/LevelSelector.java
+++ b/src/gui/LevelSelector.java
@@ -3,12 +3,16 @@ package gui;
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.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
-import javafx.stage.Stage;
+import javafx.scene.paint.Color;
+import javafx.scene.text.Font;
+import javafx.scene.text.Text;
public class LevelSelector extends Pane
{
@@ -17,12 +21,60 @@ public class LevelSelector extends Pane
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);
- //super.setAlignment(Pos.CENTER);
+ levels.minWidthProperty().bind(super.widthProperty().multiply(0.25));
+ levels.minHeightProperty().bind(super.heightProperty().multiply(0.75));
+
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.switchMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu("MainMenu"));
+
+ VBox leftBox = new VBox();
+ leftBox.setAlignment(Pos.CENTER_LEFT);
+ leftBox.setSpacing(10);
+ leftBox.getChildren().addAll(levels,exit);
+
+ Text title = new Text();
+ title.setText("Test level 1");
+ title.setFill(Color.WHITE);
+ title.setFont(new Font(50));
+ title.wrappingWidthProperty().bind(super.widthProperty().multiply(0.37));
+
+ Text desc = new Text();
+ desc.setText("long description with lots of words. what we write does not actually need to be long i just wan t make sure it can word wrap");
+ desc.setFill(Color.WHITE);
+ desc.wrappingWidthProperty().bind(super.widthProperty().multiply(0.37));
+
+ ImageView previewView = new ImageView();
+ Image preview = new Image("assets/pico.png");
+ previewView.setImage(preview);
+ //previewView.setFitHeight(100);
+ previewView.fitWidthProperty().bind(super.widthProperty().multiply(0.25));
+ previewView.setPreserveRatio(true);
+
+ VBox details = new VBox();
+ details.minWidthProperty().bind(super.widthProperty().multiply(0.37));
+ details.minHeightProperty().bind(super.heightProperty().multiply(0.75));
+ details.maxWidthProperty().bind(super.widthProperty().multiply(0.37));
+ details.maxHeightProperty().bind(super.heightProperty().multiply(0.75));
+ details.getStyleClass().add("textBox");
+ details.getChildren().addAll(title,desc,previewView);
+
+ Button play = new Button();
+ play.setText("Play");
+
+ VBox rightBox = new VBox();
+ rightBox.setAlignment(Pos.CENTER_RIGHT);
+ rightBox.setSpacing(10);
+ rightBox.getChildren().addAll(details,play);
+
+ HBox rootBox = new HBox();
+ rootBox.minWidthProperty().bind(super.widthProperty());
+ rootBox.minHeightProperty().bind(super.heightProperty());
+ rootBox.getChildren().addAll(leftBox, rightBox);
+ rootBox.setAlignment(Pos.CENTER);
+ rootBox.setSpacing(10);
- super.getChildren().addAll(levels,exit);
+ super.getChildren().add(rootBox);
}
}
diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java
index 3ad91ad..d04408d 100644
--- a/src/gui/MainMenu.java
+++ b/src/gui/MainMenu.java
@@ -1,16 +1,9 @@
package gui;
-import javafx.event.EventHandler;
-import javafx.event.ActionEvent;
import javafx.geometry.Pos;
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;
@@ -21,7 +14,6 @@ public class MainMenu extends Pane
{
public MainMenu()
{
-
DropShadow dropShadow = new DropShadow();
dropShadow.setRadius(50.0);
dropShadow.setColor(Color.WHITE);
@@ -35,36 +27,32 @@ public class MainMenu extends Pane
Button play = new Button();
play.setText("Play");
- play.setOnAction(e -> Driver.switchMenu("LevelSelector"));
+ play.setOnAction(e -> Driver.setMenu("LevelSelector"));
Button settings = new Button();
settings.setText("Settings");
- settings.setOnAction(e -> Driver.switchMenu("Settings"));
+ settings.setOnAction(e -> Driver.setMenu("Settings"));
Button leaderboard = new Button();
leaderboard.setText("Leaderboard");
- leaderboard.setOnAction(e -> Driver.switchMenu("Leaderboard"));
-
- //Border border = new Border(new BorderStroke(Color.WHITE, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT));
+ leaderboard.setOnAction(e -> Driver.setMenu("Leaderboard"));
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 94c2a89..946be85 100644
--- a/src/gui/Settings.java
+++ b/src/gui/Settings.java
@@ -1,12 +1,12 @@
package gui;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
+import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
import javafx.scene.text.Text;
public class Settings extends Pane
@@ -15,6 +15,7 @@ public class Settings extends Pane
{
Text t1 = new Text();
t1.setText("Music Volume");
+ t1.setFill(Color.WHITE);
Slider musicVol = new Slider();
musicVol.setMax(100);
@@ -22,6 +23,7 @@ public class Settings extends Pane
Text t2 = new Text();
t2.setText("Sound Effects Volume");
+ t2.setFill(Color.WHITE);
Slider sfxVol = new Slider();
sfxVol.setMax(100);
@@ -29,25 +31,26 @@ public class Settings extends Pane
Button devMenu = new Button();
devMenu.setText("Debug Menu");
- devMenu.setOnAction(new EventHandler<ActionEvent>()
- {
- @Override
- public void handle(ActionEvent event)
- {
- Driver.setBackground("assets/trees.png");
- }
- });
+ devMenu.setOnAction(e -> Driver.setBackground("assets/trees.png"));
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.switchMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu("MainMenu"));
VBox options = new VBox();
+ options.setSpacing(10);
options.setAlignment(Pos.CENTER);
options.getChildren().addAll(t1,musicVol,t2,sfxVol,devMenu,exit);
- options.minWidthProperty().bind(super.widthProperty());
+ options.minWidthProperty().bind(super.widthProperty().multiply(0.25));
options.minHeightProperty().bind(super.heightProperty());
- super.getChildren().add(options);
+ //options.getStyleClass().add("textBox");
+
+ HBox rootBox = new HBox();
+ rootBox.minWidthProperty().bind(super.widthProperty());
+ rootBox.minHeightProperty().bind(super.heightProperty());
+ rootBox.getChildren().add(options);
+ rootBox.setAlignment(Pos.CENTER);
+ super.getChildren().add(rootBox);
}
}
diff --git a/src/gui/style.css b/src/gui/style.css
index 3e18f9d..7ca76be 100644
--- a/src/gui/style.css
+++ b/src/gui/style.css
@@ -1,14 +1,20 @@
+/* button */
+
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;
+ -fx-background-radius: 5;
}
Button:hover {
- -fx-background-color: rgb(255, 255, 255);
- -fx-text-fill: rgb(0, 0, 0);
+ -fx-background-color: rgb(50, 50, 50, 0.5);
+}
+
+Button:focused {
+ -fx-background-color: rgb(255, 255, 255);
+ -fx-text-fill: rgb(0, 0, 0);
}
Button:pressed {
@@ -16,6 +22,68 @@ Button:pressed {
-fx-text-fill: rgb(0, 0, 0);
}
-.pad {
+/* list */
+
+ListView {
+ -fx-background-color: rgba(0, 0, 0, 0.5);
+ -fx-background-radius: 5;
+}
+
+.list-cell {
+ -fx-padding: .5em;
+ -fx-background-color: transparent;
+ -fx-text-fill: rgb(255, 255, 255);
+}
+
+.list-cell:hover {
+ -fx-background-color: rgba(100, 100, 100, 0.5);
+
+}
+
+.list-cell:selected {
+ -fx-background-color: rgb(255, 255, 255);
+ -fx-text-fill: rgb(0, 0, 0);
+}
+
+/* slider */
+
+Slider {
-fx-padding: 1em;
-} \ No newline at end of file
+}
+
+.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);
+}
+
+.textBox {
+ -fx-background-radius: 5;
+ -fx-background-color: rgba(0, 0, 0, 0.5);
+ -fx-text-fill: white;
+}