aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-05-21 00:45:19 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-05-21 00:45:19 -0400
commitf49a73c6af7445bb4ae92fcab87e13abba527048 (patch)
tree218b7b8c6d64ccd54015d3d47921cb04e11ef503
parent7c106e7dda744e7d3782737262601de693db0dca (diff)
downloadNPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.tar.gz
NPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.tar.bz2
NPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.zip
add ui scrollbars, game over menu, new font
-rw-r--r--.gitignore1
-rw-r--r--.vscode/launch.json8
-rw-r--r--src/fallTest/Hbox.java5
-rw-r--r--src/gui/DebugMenu.java41
-rw-r--r--src/gui/Driver.java29
-rw-r--r--src/gui/GameOver.java113
-rw-r--r--src/gui/Leaderboard.java3
-rw-r--r--src/gui/LevelDetails.java73
-rw-r--r--src/gui/LevelSelector.java20
-rw-r--r--src/gui/LevelSurround.java20
-rw-r--r--src/gui/MainMenu.java9
-rw-r--r--src/gui/Settings.java16
-rw-r--r--src/gui/SettingsController.java54
-rw-r--r--src/gui/style.css135
-rw-r--r--src/main/LeaderboardController.java5
-rw-r--r--src/main/LevelController.java2
-rw-r--r--src/main/SettingsController.java61
-rw-r--r--src/test/Block.java (renamed from src/gui/Block.java)0
-rw-r--r--src/test/SongPlayer2.java (renamed from src/gui/SongPlayer2.java)0
19 files changed, 445 insertions, 150 deletions
diff --git a/.gitignore b/.gitignore
index b3826ee..58702fa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
*.class
/bin/
+/.vscode/
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 5a3e9f9..5cb41aa 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,6 +6,14 @@
"configurations": [
{
"type": "java",
+ "name": "GUIDriver",
+ "request": "launch",
+ "mainClass": "gui.GUIDriver",
+ "projectName": "GuitarHero",
+ "vmArgs": "--module-path lib/linux --add-modules javafx.base,javafx.media,javafx.graphics,javafx.controls,javafx.fxml"
+ },
+ {
+ "type": "java",
"name": "resizeTest",
"request": "launch",
"mainClass": "test.resizeTest",
diff --git a/src/fallTest/Hbox.java b/src/fallTest/Hbox.java
deleted file mode 100644
index a7a97a7..0000000
--- a/src/fallTest/Hbox.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package fallTest;
-
-public class Hbox {
-
-}
diff --git a/src/gui/DebugMenu.java b/src/gui/DebugMenu.java
new file mode 100644
index 0000000..c014ee0
--- /dev/null
+++ b/src/gui/DebugMenu.java
@@ -0,0 +1,41 @@
+package gui;
+
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+import main.Level;
+
+public class DebugMenu
+{
+ public Stage primaryStage = new Stage();
+ public DebugMenu()
+ {
+ Button wallpaperTest = new Button();
+ wallpaperTest.setText("wallpaper trees");
+ wallpaperTest.setOnAction(e -> Driver.setBackground("assets/trees.png"));
+
+ Button wallpaperTest2 = new Button();
+ wallpaperTest2.setText("wallpaper water");
+ wallpaperTest2.setOnAction(e -> Driver.setBackground("assets/water.png"));
+
+ Button wallpaperTest3 = new Button();
+ wallpaperTest3.setText("wallpaper pico");
+ wallpaperTest3.setOnAction(e -> Driver.setBackground("assets/pico.png"));
+
+ Button testfinish = new Button();
+ testfinish.setText("launch game end");
+ Level temp = new Level();
+ temp.title = "Title";
+ temp.aritst = "artist";
+ testfinish.setOnAction(e -> Driver.setMenu(new GameOver(300, new Settings(), temp, "Easy")));
+
+ VBox primaryPane = new VBox();
+ primaryPane.getChildren().addAll(wallpaperTest,wallpaperTest2,wallpaperTest3,testfinish);
+
+ Scene primaryScene = new Scene(primaryPane);
+ primaryStage.setScene(primaryScene);
+ primaryStage.setTitle("debug");
+ primaryStage.show();
+ }
+}
diff --git a/src/gui/Driver.java b/src/gui/Driver.java
index b93dbce..208756d 100644
--- a/src/gui/Driver.java
+++ b/src/gui/Driver.java
@@ -1,11 +1,16 @@
package gui;
-import java.util.HashMap;
-
+import javafx.util.Duration;
+import javafx.animation.KeyFrame;
+import javafx.animation.KeyValue;
+import javafx.animation.Timeline;
import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.beans.property.Property;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundPosition;
@@ -62,6 +67,16 @@ public class Driver extends Application
public static void setBackground(String url)
{
+ // Image image1;
+ // Image image2;
+ // ImageView imageView;
+ // KeyFrame keyFrame1On = new KeyFrame(Duration.seconds(0), new KeyValue(imageView.imageProperty(), image1));
+ // KeyFrame startFadeOut = new KeyFrame(Duration.seconds(0.2), new KeyValue(imageView.opacityProperty(), 1.0));
+ // KeyFrame endFadeOut = new KeyFrame(Duration.seconds(0.5), new KeyValue(imageView.opacityProperty(), 0.0));
+ // KeyFrame keyFrame2On = new KeyFrame(Duration.seconds(0.5), new KeyValue(imageView.imageProperty(), image2));
+ // KeyFrame endFadeIn = new KeyFrame(Duration.seconds(0.8), new KeyValue(imageView.opacityProperty(), 1.0));
+ // Timeline timelineOn = new Timeline(keyFrame1On, startFadeOut, endFadeOut, keyFrame2On, endFadeIn);
+
primaryPane.setBackground(new Background(
new BackgroundImage(
new Image(url),
@@ -70,4 +85,14 @@ public class Driver extends Application
new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, true, true, false, true)
)));
}
+
+ public static void quit()
+ {
+ try {
+ Platform.exit();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
diff --git a/src/gui/GameOver.java b/src/gui/GameOver.java
new file mode 100644
index 0000000..68b6759
--- /dev/null
+++ b/src/gui/GameOver.java
@@ -0,0 +1,113 @@
+package gui;
+
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.BorderPane;
+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;
+import main.Level;
+
+public class GameOver extends Pane
+{
+ public GameOver(int score2, Pane lastMenu, Level level, String diff)
+ {
+ Text topText = new Text();
+ topText.setText("Level Complete");
+ topText.setFill(Color.WHITE);
+ topText.setStyle("-fx-font-size: 50;");
+
+
+ Text levelName = new Text();
+ levelName.setText(level.title);
+ levelName.setFill(Color.WHITE);
+ levelName.setStyle("-fx-font-size: 30;");
+
+ Text levelArtist = new Text();
+ levelArtist.setText(level.aritst+" - "+diff);
+ levelArtist.setFill(Color.WHITE);
+
+ VBox levelDetailsBox = new VBox();
+ levelDetailsBox.getChildren().addAll(levelName,levelArtist);
+ levelDetailsBox.getStyleClass().add("textBox");
+ levelDetailsBox.setPadding(new Insets(5));
+
+
+ Text scoreLabel = new Text();
+ scoreLabel.setText("Final score");
+ scoreLabel.setFill(Color.WHITE);
+
+ Text score = new Text();
+ score.setText(score2+"");
+ score.setFill(Color.WHITE);
+ score.setStyle("-fx-font-size: 30;");
+
+ VBox scoreBox = new VBox();
+ scoreBox.getStyleClass().add("textBox");
+ scoreBox.getChildren().addAll(scoreLabel,score);
+ scoreBox.setPadding(new Insets(5));
+
+
+ Text nameLabel = new Text();
+ nameLabel.setText("Leaderboard entry");
+ nameLabel.setFill(Color.WHITE);
+
+ TextField name = new TextField();
+ name.getStyleClass().remove("text-feild");
+ name.getStyleClass().add("custom-radio-button");
+ name.setText("name");
+
+ Button save = new Button();
+ save.setText("Add");
+ save.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent event) {
+ save.setDisable(true);
+ name.setDisable(true);
+ }
+ });
+
+ BorderPane b = new BorderPane();
+ b.setRight(save);
+ b.setCenter(name);
+
+ VBox nameBox = new VBox();
+ nameBox.getChildren().addAll(nameLabel,b);
+ nameBox.getStyleClass().add("textBox");
+ nameBox.setSpacing(5);
+ nameBox.setPadding(new Insets(5));
+
+
+ Button exit = new Button();
+ exit.setText("Exit");
+ exit.setOnAction(e -> Driver.setMenu(lastMenu));
+
+ Button replay = new Button();
+ replay.setText("Replay");
+ replay.setOnAction(e -> Driver.setMenu(new LevelSurround(level, diff, lastMenu)));
+
+ BorderPane buttonBox = new BorderPane();
+ buttonBox.setLeft(exit);
+ buttonBox.setRight(replay);
+
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(topText,levelDetailsBox,scoreBox,nameBox,buttonBox);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ HBox rootBox = new HBox();
+ rootBox.getChildren().add(centerBox);
+ rootBox.setAlignment(Pos.CENTER);
+ rootBox.prefWidthProperty().bind(super.prefWidthProperty());
+ rootBox.prefHeightProperty().bind(super.prefHeightProperty());
+
+ super.getChildren().add(rootBox);
+ }
+}
diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java
index 2b12d25..4f5604d 100644
--- a/src/gui/Leaderboard.java
+++ b/src/gui/Leaderboard.java
@@ -16,6 +16,8 @@ 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.getStyleClass().remove("list-view");
+ scores.getStyleClass().add("unselectable");
scores.setItems(scoreList);
scores.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
scores.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
@@ -28,6 +30,7 @@ public class Leaderboard extends Pane
centerBox.setAlignment(Pos.CENTER);
centerBox.setSpacing(10);
centerBox.getChildren().addAll(scores,exit);
+ centerBox.setMinWidth(400);
HBox rootBox = new HBox();
rootBox.prefWidthProperty().bind(super.prefWidthProperty());
diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java
index 427ede0..8ca4811 100644
--- a/src/gui/LevelDetails.java
+++ b/src/gui/LevelDetails.java
@@ -3,31 +3,28 @@ package gui;
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.RadioButton;
+import javafx.scene.control.ScrollPane;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
+import javafx.scene.layout.FlowPane;
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 javafx.scene.text.TextFlow;
import main.Level;
public class LevelDetails extends VBox
{
public LevelDetails(Level level)
{
- VBox details = new VBox();
- details.prefWidthProperty().bind(super.prefWidthProperty());
- details.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
- details.maxWidthProperty().bind(super.prefWidthProperty());
- details.maxHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
- details.getStyleClass().add("textBox");
- details.setPadding(new Insets(10));
+ VBox rightBox = new VBox();
+ rightBox.prefWidthProperty().bind(super.prefWidthProperty());
+ rightBox.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
+ rightBox.getStyleClass().add("textBox");
Button play = new Button();
play.setDisable(true);
@@ -40,22 +37,33 @@ public class LevelDetails extends VBox
desc.setFill(Color.WHITE);
desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
desc.setTextAlignment(TextAlignment.CENTER);
- details.setAlignment(Pos.CENTER);
- details.getChildren().addAll(desc);
+
+ rightBox.setAlignment(Pos.CENTER);
+ rightBox.getChildren().addAll(desc);
}
else
{
+ VBox details = new VBox();
+
+ ScrollPane detailsScroll = new ScrollPane(details);
+ detailsScroll.prefHeightProperty().bind(rightBox.prefHeightProperty());
+ detailsScroll.prefWidthProperty().bind(rightBox.prefWidthProperty());
+ detailsScroll.getStyleClass().remove("scroll-pane");
+
Text title = new Text();
title.setText(level.title);
title.setFill(Color.WHITE);
- title.setFont(new Font(50));
- title.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
+ title.setStyle("-fx-font-size: 50;");
+
+ Text artist = new Text();
+ artist.setText(level.aritst);
+ artist.setFill(Color.WHITE);
+ artist.setStyle("-fx-font-size: 30;");
Text desc = new Text();
desc.setText(level.desc);
desc.setFill(Color.WHITE);
- desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10));
ImageView previewView = new ImageView();
Image preview = level.preview;
@@ -63,31 +71,40 @@ public class LevelDetails extends VBox
previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5));
previewView.setPreserveRatio(true);
- HBox diffBox = new HBox();
- diffBox.setPadding(new Insets(30,0,0,0));
- HBox diffSelector = new HBox();
+ FlowPane diffSelector = new FlowPane();
diffSelector.setAlignment(Pos.CENTER);
ToggleGroup diffToggleGroup = new ToggleGroup();
for (String diff : level.diffList)
{
- ToggleButton temp = new ToggleButton();
+ RadioButton temp = new RadioButton();
+ temp.getStyleClass().remove("radio-button");
+ temp.getStyleClass().add("button");
+ temp.getStyleClass().add("custom-radio-button");
temp.setText(diff);
+ temp.setUserData(diff);
diffToggleGroup.getToggles().add(temp);
diffSelector.getChildren().add(temp);
}
play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
-
+ play.setOnAction(e -> Driver.setMenu(new LevelSurround(level, (String)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu())));
+ HBox diffBox = new HBox();
+ diffSelector.prefWidthProperty().bind(diffBox.widthProperty());
diffBox.getChildren().add(diffSelector);
- details.getChildren().addAll(title,desc,previewView, diffBox);
- play.setOnAction(e -> Driver.setMenu(new LevelSurround(level, "easy", Driver.getMenu())));
+
+ details.setSpacing(10);
+ details.getChildren().addAll(new TextFlow(title), new TextFlow(artist), new TextFlow(desc), previewView, diffBox);
+ detailsScroll.setFitToWidth(true);
+
+ rightBox.getChildren().add(detailsScroll);
+ rightBox.setPadding(new Insets(5));
}
- VBox rightBox = new VBox();
- rightBox.setAlignment(Pos.CENTER_RIGHT);
- rightBox.setSpacing(10);
- rightBox.getChildren().addAll(details,play);
+ VBox rightSide = new VBox();
+ rightSide.setAlignment(Pos.CENTER_RIGHT);
+ rightSide.setSpacing(10);
+ rightSide.getChildren().addAll(rightBox,play);
super.setAlignment(Pos.CENTER_RIGHT);
- super.getChildren().add(rightBox);
+ super.getChildren().add(rightSide);
}
}
diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java
index 38dc15f..0d81c39 100644
--- a/src/gui/LevelSelector.java
+++ b/src/gui/LevelSelector.java
@@ -1,19 +1,13 @@
package gui;
-import javafx.collections.FXCollections;
-import javafx.collections.ObservableList;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
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.scene.paint.Color;
-import javafx.scene.text.Font;
-import javafx.scene.text.Text;
-import main.LevelController;
import main.Level;
public class LevelSelector extends Pane
@@ -24,6 +18,7 @@ public class LevelSelector extends Pane
levels.setItems(main.LevelController.levelList);
levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
+ levels.setMinWidth(275);
Button exit = new Button();
exit.setText("Exit");
@@ -45,7 +40,14 @@ public class LevelSelector extends Pane
rootBox.setAlignment(Pos.CENTER);
rootBox.setSpacing(10);
- levels.setOnMouseClicked(e -> addDetails(rightBox, levels));
+ levels.getStyleClass().remove("list-view");
+ levels.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Level>() {
+
+ @Override
+ public void changed(ObservableValue<? extends Level> arg0, Level arg1, Level arg2) {
+ addDetails(rightBox, levels);
+ }
+ });
super.getChildren().add(rootBox);
}
diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java
index 3371c3e..6b06313 100644
--- a/src/gui/LevelSurround.java
+++ b/src/gui/LevelSurround.java
@@ -1,6 +1,5 @@
package gui;
-import fallTest.Hbox;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
@@ -10,7 +9,6 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
-import javafx.scene.text.Font;
import javafx.scene.text.Text;
import main.Level;
@@ -34,15 +32,15 @@ public class LevelSurround extends Pane
Text title = new Text();
title.setText(level.title);
title.setFill(Color.WHITE);
- title.setFont(new Font(50));
+ title.setStyle("-fx-font-size: 30;");
- Text diff = new Text();
- diff.setText(diff2);
- diff.setFill(Color.WHITE);
+ Text artist = new Text();
+ artist.setText(level.aritst+" - "+diff2);
+ artist.setFill(Color.WHITE);
VBox titleTextBox = new VBox();
titleTextBox.setAlignment(Pos.TOP_RIGHT);
- titleTextBox.getChildren().addAll(title,diff);
+ titleTextBox.getChildren().addAll(title, artist);
BorderPane topBar = new BorderPane();
topBar.setLeft(buttonBox);
@@ -57,7 +55,7 @@ public class LevelSurround extends Pane
Text score = new Text();
score.setText("100000");
score.setFill(Color.WHITE);
- score.setFont(new Font(50));
+ score.setStyle("-fx-font-size: 50;");
VBox scoreTextBox = new VBox();
scoreTextBox.setAlignment(Pos.BOTTOM_LEFT);
@@ -72,7 +70,7 @@ public class LevelSurround extends Pane
Text combo = new Text();
combo.setText("100000");
combo.setFill(Color.WHITE);
- combo.setFont(new Font(50));
+ combo.setStyle("-fx-font-size: 50;");
VBox comboTextBox = new VBox();
comboTextBox.setAlignment(Pos.BOTTOM_RIGHT);
@@ -80,8 +78,8 @@ public class LevelSurround extends Pane
comboTextBox.setPadding(new Insets(10));
Pane game = new Pane();
- game.prefWidthProperty().bind(super.prefHeightProperty().multiply(0.66));
- game.prefHeightProperty().bind(super.prefHeightProperty());
+ game.minWidthProperty().bind(super.prefHeightProperty().multiply(0.66));
+ game.minHeightProperty().bind(super.prefHeightProperty());
game.getStyleClass().add("textBox");
HBox centerBox = new HBox();
diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java
index f3cd75d..347ab3c 100644
--- a/src/gui/MainMenu.java
+++ b/src/gui/MainMenu.java
@@ -7,7 +7,6 @@ import javafx.scene.effect.DropShadow;
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;
public class MainMenu extends Pane
@@ -21,7 +20,7 @@ public class MainMenu extends Pane
Text title = new Text();
title.setText("NPE Hero");
- title.setFont(new Font(125));
+ title.setStyle("-fx-font-size: 125;");
title.setEffect(dropShadow);
title.setFill(Color.WHITE);
@@ -37,8 +36,12 @@ public class MainMenu extends Pane
leaderboard.setText("Leaderboard");
leaderboard.setOnAction(e -> Driver.setMenu(new Leaderboard()));
+ Button exit = new Button();
+ exit.setText("Quit");
+ exit.setOnAction(e -> Driver.quit());
+
VBox buttonBox = new VBox();
- buttonBox.getChildren().addAll(play, settings, leaderboard);
+ buttonBox.getChildren().addAll(play, settings, leaderboard, exit);
buttonBox.setAlignment(Pos.CENTER);
buttonBox.setSpacing(10);
diff --git a/src/gui/Settings.java b/src/gui/Settings.java
index c89953f..6e7e578 100644
--- a/src/gui/Settings.java
+++ b/src/gui/Settings.java
@@ -3,6 +3,8 @@ package gui;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
+import javafx.scene.control.Toggle;
+import javafx.scene.control.ToggleButton;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
@@ -29,9 +31,16 @@ public class Settings extends Pane
sfxVol.setMax(100);
sfxVol.setMin(0);
+ Button fullscreen = new Button();
+ fullscreen.setText("Toggle Fullscreen (F11)");
+ fullscreen.getStyleClass().remove("toggle-button");
+ fullscreen.getStyleClass().add("button");
+ fullscreen.getStyleClass().add("custom-radio-button");
+ fullscreen.setOnAction(e -> Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen()));
+
Button devMenu = new Button();
devMenu.setText("Debug Menu");
- devMenu.setOnAction(e -> Driver.setBackground("assets/trees.png"));
+ devMenu.setOnAction(e -> new DebugMenu());
Button exit = new Button();
exit.setText("Exit");
@@ -40,8 +49,9 @@ public class Settings extends Pane
VBox options = new VBox();
options.setSpacing(10);
options.setAlignment(Pos.CENTER);
- options.getChildren().addAll(t1,musicVol,t2,sfxVol,devMenu,exit);
- options.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
+ options.getChildren().addAll(t1,musicVol,t2,sfxVol,fullscreen,devMenu,exit);
+ options.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
+ options.setMinWidth(400);
options.prefHeightProperty().bind(super.prefHeightProperty());
HBox rootBox = new HBox();
diff --git a/src/gui/SettingsController.java b/src/gui/SettingsController.java
deleted file mode 100644
index 66da588..0000000
--- a/src/gui/SettingsController.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package gui;
-
-import java.util.Map;
-import java.util.HashMap;
-import java.io.FileWriter;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.json.simple.JSONObject;
-import org.json.simple.JSONArray;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-
-public class SettingsController
-{
- private int effectsVol;
- private int musicVol;
- private boolean fullscreen;
- private JSONObject settings;
-
- public void saveAndWrite(int newEffVol, int newMusVol, boolean isFull)
- {
-
- }
-
- public void readFile() throws ParseException
- {
- JSONParser jsonParser = new JSONParser(); //parser to read the file
-
- try(FileReader reader = new FileReader("settings.json"))
- {
- Object obj = jsonParser.parse(reader);
-
- settings = (JSONObject)(obj); //converts read object to a JSONObject
-
- effectsVol = (int) settings.get("effectsVol");
- musicVol = (int) settings.get("musicVol");
- fullscreen = (boolean) settings.get("fullscreen");
- }
- catch (FileNotFoundException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
-}
diff --git a/src/gui/style.css b/src/gui/style.css
index 957025f..267e96a 100644
--- a/src/gui/style.css
+++ b/src/gui/style.css
@@ -1,9 +1,17 @@
+/* global */
+
+@import url('https://fonts.googleapis.com/css2?family=Space+Mono&display=swap');
+.root{
+ /* -fx-font-size: 16pt; */
+ -fx-font-family: "space mono";
+ -fx-text-fill: white;
+}
+
/* button */
Button {
-fx-background-color: rgba(0, 0, 0, 0.5);
-fx-text-fill: white;
- /* -fx-padding: .5em; */
-fx-border-color: transparent;
-fx-border-width: 3;
-fx-border-radius: 5;
@@ -16,10 +24,8 @@ Button:hover {
}
Button:focused {
- /* -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 {
@@ -34,13 +40,16 @@ ListView {
-fx-background-color: rgba(0, 0, 0, 0.5);
-fx-background-radius: 5;
-fx-padding: 5;
- -fx-effect: none;
+ /* -fx-font-size: 15; */
+ /* -fx-border-width: 3;
+ -fx-border-radius: 5;
+ -fx-border-color: transparent; */
}
.list-cell {
-fx-padding: .5em;
-fx-background-color: transparent;
- -fx-background-radius: 5;
+ -fx-background-radius: 3;
-fx-text-fill: rgb(255, 255, 255);
-fx-border-width: 3;
-fx-border-radius: 5;
@@ -52,7 +61,7 @@ ListView {
}
-.list-cell:focused {
+ListView:focused .list-cell:focused {
-fx-background-color: rgb(50, 50, 50, 0.5);
-fx-border-color: rgb(255, 255, 255);
}
@@ -62,6 +71,23 @@ ListView {
-fx-text-fill: rgb(0, 0, 0);
}
+.list-cell:pressed {
+ -fx-background-color: rgb(231, 231, 231);
+ -fx-border-color: transparent;
+}
+
+.list-cell:empty {
+ -fx-background-color: transparent;
+ -fx-border-color: transparent;
+ -fx-text-fill: white;
+}
+
+.unselectable .list-cell{
+ -fx-background-color: transparent;
+ -fx-border-color: transparent;
+ -fx-text-fill: white;
+}
+
/* slider */
Slider {
@@ -99,25 +125,9 @@ Slider:focused .thumb{
-fx-border-color: rgb(231, 231, 231);
}
-/* text box */
-
-.textBox {
- -fx-background-radius: 5;
- -fx-background-color: rgba(0, 0, 0, 0.5);
- -fx-text-fill: white;
-}
-
-.debug {
- -fx-background-radius: 5;
- -fx-background-color: rgba(255, 0, 0, 0.281);
- -fx-border-color: red;
- -fx-text-fill: white;
- -fx-border-width: 20;
-}
-
/* toggle button */
-ToggleButton {
+.custom-radio-button {
-fx-background-color: rgba(0, 0, 0, 0.5);
-fx-text-fill: white;
-fx-border-color: transparent;
@@ -127,23 +137,92 @@ ToggleButton {
-fx-background-radius: 5;
}
-ToggleButton:hover {
+.custom-radio-button:hover {
-fx-background-color: rgb(50, 50, 50, 0.5);
}
-ToggleButton:focused {
+.custom-radio-button:focused {
-fx-background-color: rgb(50, 50, 50, 0.5);
-fx-border-color: rgb(255, 255, 255);
}
-ToggleButton:selected {
+.custom-radio-button:selected {
-fx-background-color: rgb(255, 255, 255);
-fx-text-fill: rgb(0, 0, 0);
}
-ToggleButton:pressed {
+.custom-radio-button: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
+}
+
+/* scroll bars */
+
+.scroll-bar:horizontal ,
+.scroll-bar:vertical{
+ -fx-font-size: 5px;
+ -fx-background-color :transparent;
+ -fx-border-color :transparent;
+ -fx-background-radius : 0.0em;
+ -fx-border-radius :2.0em;
+}
+
+.increment-button ,.decrement-button {
+ -fx-background-color:transparent;
+ -fx-border-color:transparent;
+}
+
+/* .increment-button:hover , .decrement-button:hover {
+ -fx-background-color:derive(gray,100%);
+ -fx-border-color:derive(gray,80%);
+}*/
+
+.scroll-bar:horizontal .track ,
+.scroll-bar:vertical .track{
+ -fx-background-color: rgba(0, 0, 0, 0.5);
+ -fx-background-radius: 5em;
+}
+
+/* .scroll-bar:horizontal:hover .track ,
+.scroll-bar:horizontal:pressed .track ,
+.scroll-bar:vertical:hover .track,
+.scroll-bar:vertical:pressed .track{
+ -fx-background-color: derive(#434343,20%);
+
+ -fx-opacity: 0.2;
+ -fx-background-radius: 0em;
+} */
+
+.scroll-bar:horizontal .thumb,
+.scroll-bar:vertical .thumb {
+ -fx-background-color:white;
+ -fx-background-radius: 5em;
+ -fx-border-width: 0;
+
+}
+
+.scroll-bar .thumb:pressed {
+ -fx-background-color: rgb(231, 231, 231);
+}
+
+/* text box */
+
+.textBox {
+ -fx-background-radius: 5;
+ -fx-background-color: rgba(0, 0, 0, 0.5);
+ -fx-text-fill: white;
+}
+
+/* debug */
+
+.debug {
+ -fx-background-radius: 5;
+ -fx-background-color: rgba(255, 0, 0, 0.281);
+ -fx-border-color: red;
+ -fx-text-fill: white;
+ -fx-border-width: 20;
+}
+
+
diff --git a/src/main/LeaderboardController.java b/src/main/LeaderboardController.java
new file mode 100644
index 0000000..b48f103
--- /dev/null
+++ b/src/main/LeaderboardController.java
@@ -0,0 +1,5 @@
+package main;
+
+public class LeaderboardController {
+
+}
diff --git a/src/main/LevelController.java b/src/main/LevelController.java
index 6dec953..6d2f5dc 100644
--- a/src/main/LevelController.java
+++ b/src/main/LevelController.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
+import javafx.scene.image.Image;
import javafx.scene.paint.Color;
public class LevelController
@@ -31,6 +32,7 @@ public class LevelController
testLevel2.diffList.add("Easy");
testLevel2.diffList.add("Med");
testLevel2.diffList.add("insane+++");
+ testLevel2.preview = new Image("assets/pico.png");
levelList.add(testLevel2);
}
diff --git a/src/main/SettingsController.java b/src/main/SettingsController.java
index 79fb560..66da588 100644
--- a/src/main/SettingsController.java
+++ b/src/main/SettingsController.java
@@ -1,7 +1,54 @@
-// coming soon
-// needs to have getters and setters for:
-// - sfx vol
-// - music vol
-// - full screen
-//
-// perhaps use public variables instead of getters and setters \ No newline at end of file
+package gui;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.io.FileWriter;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.json.simple.JSONObject;
+import org.json.simple.JSONArray;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+public class SettingsController
+{
+ private int effectsVol;
+ private int musicVol;
+ private boolean fullscreen;
+ private JSONObject settings;
+
+ public void saveAndWrite(int newEffVol, int newMusVol, boolean isFull)
+ {
+
+ }
+
+ public void readFile() throws ParseException
+ {
+ JSONParser jsonParser = new JSONParser(); //parser to read the file
+
+ try(FileReader reader = new FileReader("settings.json"))
+ {
+ Object obj = jsonParser.parse(reader);
+
+ settings = (JSONObject)(obj); //converts read object to a JSONObject
+
+ effectsVol = (int) settings.get("effectsVol");
+ musicVol = (int) settings.get("musicVol");
+ fullscreen = (boolean) settings.get("fullscreen");
+ }
+ catch (FileNotFoundException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/gui/Block.java b/src/test/Block.java
index 42cedba..42cedba 100644
--- a/src/gui/Block.java
+++ b/src/test/Block.java
diff --git a/src/gui/SongPlayer2.java b/src/test/SongPlayer2.java
index ed6476d..ed6476d 100644
--- a/src/gui/SongPlayer2.java
+++ b/src/test/SongPlayer2.java