aboutsummaryrefslogtreecommitdiff
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
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)
-rw-r--r--.classpath38
-rw-r--r--.vscode/settings.json3
-rw-r--r--src/gui/Driver.java33
-rw-r--r--src/gui/Leaderboard.java2
-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
-rw-r--r--src/main/Level.java20
-rw-r--r--src/main/LevelController.java39
-rw-r--r--src/test/Level.java (renamed from src/gui/Level.java)3
13 files changed, 179 insertions, 82 deletions
diff --git a/.classpath b/.classpath
index fa58abd..4d50168 100644
--- a/.classpath
+++ b/.classpath
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
- <attributes>
- <attribute name="module" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/>
- <classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/>
+ <classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/>
+ <classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d84211f..4321e74 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,7 +2,8 @@
"java.project.sourcePaths": ["src"],
"java.project.outputPath": "bin",
"java.project.referencedLibraries": [
- "lib/linux/**/*.jar"
+ "lib/linux/**/*.jar",
+ "lib/**/*.jar"
],
"java.debug.settings.onBuildFailureProceed": true
} \ No newline at end of file
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/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
diff --git a/src/main/Level.java b/src/main/Level.java
index 52047fd..71560d2 100644
--- a/src/main/Level.java
+++ b/src/main/Level.java
@@ -8,18 +8,22 @@ import javafx.scene.paint.Color;
public class Level
{
- private Color[] colors;
- private Image background;
- private Image preview;
- private String text;
- private String desc;
- //private ArrayList<String>();
+ public Image preview;
+ public String title;
+ public String aritst;
+ public String desc;
+ public ArrayList<String> diffList = new ArrayList<String>();
+
+ public Image background;
+ public Color[] colors;
- //google "varargs" to see how this works
public void setColors(Color... newColors)
{
colors = newColors;
}
- //INCOMPLETE
+ public String toString()
+ {
+ return title+" - "+aritst;
+ }
}
diff --git a/src/main/LevelController.java b/src/main/LevelController.java
index daf7ae3..6dec953 100644
--- a/src/main/LevelController.java
+++ b/src/main/LevelController.java
@@ -1 +1,38 @@
-//coming soon \ No newline at end of file
+package main;
+
+import java.util.ArrayList;
+
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.scene.paint.Color;
+
+public class LevelController
+{
+ public static ObservableList<Level> levelList = FXCollections.observableArrayList();
+
+ public LevelController()
+ {
+ Level testLevel = new Level();
+ testLevel.title = "test level class";
+ testLevel.desc = "this level is being used to test the LevelController class";
+ testLevel.aritst = "testArtist";
+ testLevel.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE);
+ testLevel.diffList.add("Hello");
+ testLevel.diffList.add("Easy");
+ testLevel.diffList.add("Med");
+ levelList.add(testLevel);
+
+ Level testLevel2 = new Level();
+ testLevel2.title = "another one";
+ testLevel2.desc = "it can say something else too";
+ testLevel2.aritst = "testArtist2";
+ testLevel2.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE);
+ testLevel2.diffList.add("Hard");
+ testLevel2.diffList.add("Easy");
+ testLevel2.diffList.add("Med");
+ testLevel2.diffList.add("insane+++");
+ levelList.add(testLevel2);
+
+ }
+
+} \ No newline at end of file
diff --git a/src/gui/Level.java b/src/test/Level.java
index ecb741d..6647b6d 100644
--- a/src/gui/Level.java
+++ b/src/test/Level.java
@@ -1,5 +1,6 @@
-package gui;
+package test;
+import gui.Block;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;