aboutsummaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-05-19 01:15:47 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-05-19 01:15:47 -0400
commit7c106e7dda744e7d3782737262601de693db0dca (patch)
treefccec4b5825bb63e2d1195dce431f063ac87f5cb /src/gui
parentfe9794bdc8270b43ed5ae847d65ea2a2eecd4a79 (diff)
downloadNPEhero-7c106e7dda744e7d3782737262601de693db0dca.tar.gz
NPEhero-7c106e7dda744e7d3782737262601de693db0dca.tar.bz2
NPEhero-7c106e7dda744e7d3782737262601de693db0dca.zip
- overhaul css (not done)
- rewrite driver - add difficulty buttons - remove placeholders (not done)
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/Driver.java33
-rw-r--r--src/gui/Leaderboard.java2
-rw-r--r--src/gui/Level.java105
-rw-r--r--src/gui/LevelDetails.java37
-rw-r--r--src/gui/LevelSelector.java13
-rw-r--r--src/gui/LevelSurround.java9
-rw-r--r--src/gui/MainMenu.java6
-rw-r--r--src/gui/Settings.java2
-rw-r--r--src/gui/style.css56
9 files changed, 106 insertions, 157 deletions
diff --git a/src/gui/Driver.java b/src/gui/Driver.java
index 56bc36a..b93dbce 100644
--- a/src/gui/Driver.java
+++ b/src/gui/Driver.java
@@ -13,12 +13,12 @@ import javafx.scene.layout.BackgroundRepeat;
import javafx.scene.layout.BackgroundSize;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
+import main.LevelController;
public class Driver extends Application
{
static Stage primaryStage;
- static HashMap<String,Pane> menus = new HashMap<String,Pane>();
static Pane primaryPane = new Pane();
public static void main(String[] args)
@@ -29,43 +29,22 @@ public class Driver extends Application
@Override
public void start(Stage newPrimaryStage)
{
+ new LevelController();
primaryStage = newPrimaryStage;
- 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()) {
- System.out.println(primaryStage.heightProperty());
- value.prefHeightProperty().bind(primaryPane.heightProperty());
- value.prefWidthProperty().bind(primaryPane.widthProperty());
- }
-
-
Scene primaryScene = new Scene(primaryPane, 800, 600);
primaryScene.getStylesheets().add("gui/style.css");
primaryStage.setScene(primaryScene);
primaryStage.setTitle("NPE Hero");
- setMenu("MainMenu");
+ setMenu(new MainMenu());
setBackground("assets/water.png");
primaryStage.show();
}
-
- public static void setMenu(String name)
- {
- if (! primaryPane.getChildren().isEmpty())
- {
- primaryPane.getChildren().remove(0);
- }
- primaryPane.getChildren().add(menus.get(name));
- primaryPane.requestFocus();
- }
-
- public static void setCustomMenu(Pane pane)
+ public static void setMenu(Pane pane)
{
if (! primaryPane.getChildren().isEmpty())
{
@@ -77,6 +56,10 @@ public class Driver extends Application
primaryPane.requestFocus();
}
+ public static Pane getMenu(){
+ return (Pane) primaryPane.getChildren().get(0);
+ }
+
public static void setBackground(String url)
{
primaryPane.setBackground(new Background(
diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java
index b91fa7c..2b12d25 100644
--- a/src/gui/Leaderboard.java
+++ b/src/gui/Leaderboard.java
@@ -22,7 +22,7 @@ public class Leaderboard extends Pane
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.setMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu(new MainMenu()));
VBox centerBox = new VBox();
centerBox.setAlignment(Pos.CENTER);
diff --git a/src/gui/Level.java b/src/gui/Level.java
deleted file mode 100644
index ecb741d..0000000
--- a/src/gui/Level.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package gui;
-
-import javafx.application.Application;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.geometry.Insets;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.effect.BlurType;
-import javafx.scene.effect.DropShadow;
-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.paint.Color;
-import javafx.stage.Stage;
-
-// will eventually extend pane
-public class Level extends Application {
- public static void main(String[] args) {
- launch(args);
- }
-
- @Override
- public void start(Stage primaryStage) {
- primaryStage.setTitle("program");
-
- BorderPane background = new BorderPane();
- Scene game = new Scene(background, 800, 600);
- GridPane blockGrid = new GridPane();
- blockGrid.setBackground(new Background(new BackgroundFill(Color.BLACK, CornerRadii.EMPTY, Insets.EMPTY)));
- background.setCenter(blockGrid);
-
- blockGrid.maxWidthProperty().bind(game.heightProperty().multiply(0.53));
- blockGrid.maxHeightProperty().bind(game.heightProperty());
- System.out.println(game.heightProperty());
-
- //blockGrid.setMaxHeight(700);
- //blockGrid.setMaxWidth(500);
- //blockGrid.setScaleX(1);
- //blockGrid.setScaleY(1);
- //blockGrid.scaleXProperty().bind(game.heightProperty().divide(1000));
- //blockGrid.scaleYProperty().bind(game.heightProperty().divide(1000));
- //blockGrid.hgapProperty().bind(blockGrid.heightProperty().divide(11));
- //blockGrid.vgapProperty().bind(blockGrid.widthProperty().divide(21));
- blockGrid.setVgap(10);
- blockGrid.setHgap(25);
-
- int blocksize = 50;
- //AnchorPane b11 = new AnchorPane();
- //b11.getChildren().add(new Block(Color.ORANGE, b11, 10));
- Block b1 = new Block(Color.RED, blocksize, blocksize, 10);
- //b1.heightProperty().bind(blockGrid.heightProperty().divide((blockGrid.getColumnCount()*2)+1));
- //b1.widthProperty().bind(blockGrid.widthProperty().divide((blockGrid.getRowCount()*2)+1));
-
- Block b2 = new Block(Color.BLUE, blocksize, blocksize, 10);
- //b2.heightProperty().bind(blockGrid.heightProperty().divide(21));
- //b2.widthProperty().bind(blockGrid.widthProperty().divide(11));
-
- Block b3 = new Block(Color.GREEN, blocksize, blocksize, 10);
- //b3.heightProperty().bind(blockGrid.heightProperty().divide(21));
- //b3.widthProperty().bind(blockGrid.widthProperty().divide(11));
-
- Block b4 = new Block(Color.YELLOW, blocksize, blocksize, 10);
- //b4.heightProperty().bind(blockGrid.heightProperty().divide(21));
- //b4.widthProperty().bind(blockGrid.widthProperty().divide(11));
-
- Pane test = new Pane();
-
- Block b5 = new Block(Color.ORANGE, blocksize, blocksize, 10);
- DropShadow dropShadow = new DropShadow();
- dropShadow.setRadius(200.0);
- dropShadow.setColor(Color.ORANGE);
- dropShadow.setBlurType(BlurType.GAUSSIAN);
- test.getChildren().add(b5);
- test.setEffect(dropShadow);
-
-
-
- blockGrid.add(b1, 0, 0);
- blockGrid.add(b2, 1, 0);
- blockGrid.add(b3, 0, 1);
- blockGrid.add(b4, 1, 1);
- blockGrid.add(test, 1, 2);
-
- Button btn = new Button();
- btn.setText("Test");
- btn.setOnAction(new EventHandler<ActionEvent>()
- {
- @Override
- public void handle(ActionEvent event)
- {
- System.out.println("test");
- }
- });
-
- background.setLeft(btn);
-
- primaryStage.setScene(game);
- primaryStage.show();
-
- }
-} \ No newline at end of file
diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java
index 93a43cd..427ede0 100644
--- a/src/gui/LevelDetails.java
+++ b/src/gui/LevelDetails.java
@@ -4,18 +4,22 @@ import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
+import javafx.scene.control.ToggleButton;
+import javafx.scene.control.ToggleGroup;
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.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
+import main.Level;
public class LevelDetails extends VBox
{
- public LevelDetails(ListView<String> list)
+ public LevelDetails(Level level)
{
VBox details = new VBox();
details.prefWidthProperty().bind(super.prefWidthProperty());
@@ -26,9 +30,10 @@ public class LevelDetails extends VBox
details.setPadding(new Insets(10));
Button play = new Button();
+ play.setDisable(true);
play.setText("Play");
- if (list.getSelectionModel().getSelectedItem() == null)
+ if (level == null)
{
Text desc = new Text();
desc.setText("Select a level from the left pane");
@@ -37,30 +42,44 @@ public class LevelDetails extends VBox
desc.setTextAlignment(TextAlignment.CENTER);
details.setAlignment(Pos.CENTER);
details.getChildren().addAll(desc);
- play.setDisable(true);
}
else
{
Text title = new Text();
- title.setText("Test level 1");
+ title.setText(level.title);
title.setFill(Color.WHITE);
title.setFont(new Font(50));
title.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
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.setText(level.desc);
desc.setFill(Color.WHITE);
desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
ImageView previewView = new ImageView();
- Image preview = new Image("assets/pico.png");
+ Image preview = level.preview;
previewView.setImage(preview);
- //previewView.setFitHeight(100);
previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5));
previewView.setPreserveRatio(true);
- details.getChildren().addAll(title,desc,previewView);
- play.setOnAction(e -> Driver.setCustomMenu(new LevelSurround()));
+
+ HBox diffBox = new HBox();
+ diffBox.setPadding(new Insets(30,0,0,0));
+ HBox diffSelector = new HBox();
+ diffSelector.setAlignment(Pos.CENTER);
+ ToggleGroup diffToggleGroup = new ToggleGroup();
+ for (String diff : level.diffList)
+ {
+ ToggleButton temp = new ToggleButton();
+ temp.setText(diff);
+ diffToggleGroup.getToggles().add(temp);
+ diffSelector.getChildren().add(temp);
+ }
+ play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
+
+ diffBox.getChildren().add(diffSelector);
+ details.getChildren().addAll(title,desc,previewView, diffBox);
+ play.setOnAction(e -> Driver.setMenu(new LevelSurround(level, "easy", Driver.getMenu())));
}
VBox rightBox = new VBox();
diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java
index 9ae6033..38dc15f 100644
--- a/src/gui/LevelSelector.java
+++ b/src/gui/LevelSelector.java
@@ -13,20 +13,21 @@ import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
+import main.LevelController;
+import main.Level;
public class LevelSelector extends Pane
{
public LevelSelector()
{
- 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);
+ ListView<Level> levels = new ListView<Level>();
+ levels.setItems(main.LevelController.levelList);
levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.setMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu(new MainMenu()));
VBox leftBox = new VBox();
leftBox.setAlignment(Pos.CENTER_LEFT);
@@ -48,9 +49,9 @@ public class LevelSelector extends Pane
super.getChildren().add(rootBox);
}
- private void addDetails(Pane rightBox, ListView<String> levels)
+ private void addDetails(Pane rightBox, ListView<Level> levels)
{
- VBox details = new LevelDetails(levels);
+ VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem());
if (! rightBox.getChildren().isEmpty())
{
rightBox.getChildren().remove(0);
diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java
index 204ec3a..3371c3e 100644
--- a/src/gui/LevelSurround.java
+++ b/src/gui/LevelSurround.java
@@ -12,15 +12,16 @@ import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
+import main.Level;
public class LevelSurround extends Pane
{
//will have param (Level l)
- public LevelSurround()
+ public LevelSurround(Level level, String diff2, Pane prev)
{
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.setMenu("LevelSelector"));
+ exit.setOnAction(e -> Driver.setMenu(prev));
Button pause = new Button();
pause.setText("Pause");
@@ -31,12 +32,12 @@ public class LevelSurround extends Pane
buttonBox.setSpacing(10);
Text title = new Text();
- title.setText("Test level 1");
+ title.setText(level.title);
title.setFill(Color.WHITE);
title.setFont(new Font(50));
Text diff = new Text();
- diff.setText("Easy");
+ diff.setText(diff2);
diff.setFill(Color.WHITE);
VBox titleTextBox = new VBox();
diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java
index 39fb2be..f3cd75d 100644
--- a/src/gui/MainMenu.java
+++ b/src/gui/MainMenu.java
@@ -27,15 +27,15 @@ public class MainMenu extends Pane
Button play = new Button();
play.setText("Play");
- play.setOnAction(e -> Driver.setMenu("LevelSelector"));
+ play.setOnAction(e -> Driver.setMenu(new LevelSelector()));
Button settings = new Button();
settings.setText("Settings");
- settings.setOnAction(e -> Driver.setMenu("Settings"));
+ settings.setOnAction(e -> Driver.setMenu(new Settings()));
Button leaderboard = new Button();
leaderboard.setText("Leaderboard");
- leaderboard.setOnAction(e -> Driver.setMenu("Leaderboard"));
+ leaderboard.setOnAction(e -> Driver.setMenu(new Leaderboard()));
VBox buttonBox = new VBox();
buttonBox.getChildren().addAll(play, settings, leaderboard);
diff --git a/src/gui/Settings.java b/src/gui/Settings.java
index d3c2632..c89953f 100644
--- a/src/gui/Settings.java
+++ b/src/gui/Settings.java
@@ -35,7 +35,7 @@ public class Settings extends Pane
Button exit = new Button();
exit.setText("Exit");
- exit.setOnAction(e -> Driver.setMenu("MainMenu"));
+ exit.setOnAction(e -> Driver.setMenu(new MainMenu()));
VBox options = new VBox();
options.setSpacing(10);
diff --git a/src/gui/style.css b/src/gui/style.css
index 1e2dfcc..957025f 100644
--- a/src/gui/style.css
+++ b/src/gui/style.css
@@ -3,7 +3,10 @@
Button {
-fx-background-color: rgba(0, 0, 0, 0.5);
-fx-text-fill: white;
- -fx-padding: .5em;
+ /* -fx-padding: .5em; */
+ -fx-border-color: transparent;
+ -fx-border-width: 3;
+ -fx-border-radius: 5;
-fx-font-size: 25;
-fx-background-radius: 5;
}
@@ -13,12 +16,15 @@ Button:hover {
}
Button:focused {
- -fx-background-color: rgb(255, 255, 255);
- -fx-text-fill: rgb(0, 0, 0);
+ /* -fx-background-color: rgb(255, 255, 255); */
+ -fx-background-color: rgb(50, 50, 50, 0.5);
+ -fx-border-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);
}
@@ -27,12 +33,18 @@ Button:pressed {
ListView {
-fx-background-color: rgba(0, 0, 0, 0.5);
-fx-background-radius: 5;
+ -fx-padding: 5;
+ -fx-effect: none;
}
.list-cell {
-fx-padding: .5em;
-fx-background-color: transparent;
+ -fx-background-radius: 5;
-fx-text-fill: rgb(255, 255, 255);
+ -fx-border-width: 3;
+ -fx-border-radius: 5;
+ -fx-border-color: transparent;
}
.list-cell:hover {
@@ -40,6 +52,11 @@ ListView {
}
+.list-cell:focused {
+ -fx-background-color: rgb(50, 50, 50, 0.5);
+ -fx-border-color: rgb(255, 255, 255);
+}
+
.list-cell:selected {
-fx-background-color: rgb(255, 255, 255);
-fx-text-fill: rgb(0, 0, 0);
@@ -96,4 +113,37 @@ Slider:focused .thumb{
-fx-border-color: red;
-fx-text-fill: white;
-fx-border-width: 20;
+}
+
+/* toggle button */
+
+ToggleButton {
+ -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;
+}
+
+ToggleButton:hover {
+ -fx-background-color: rgb(50, 50, 50, 0.5);
+}
+
+ToggleButton:focused {
+ -fx-background-color: rgb(50, 50, 50, 0.5);
+ -fx-border-color: rgb(255, 255, 255);
+}
+
+ToggleButton:selected {
+ -fx-background-color: rgb(255, 255, 255);
+ -fx-text-fill: rgb(0, 0, 0);
+
+}
+
+ToggleButton:pressed {
+ -fx-background-color: rgb(231, 231, 231);
+ -fx-border-color: transparent;
+ -fx-text-fill: rgb(0, 0, 0);
} \ No newline at end of file