diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-05-21 00:45:19 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-05-21 00:45:19 -0400 |
commit | f49a73c6af7445bb4ae92fcab87e13abba527048 (patch) | |
tree | 218b7b8c6d64ccd54015d3d47921cb04e11ef503 | |
parent | 7c106e7dda744e7d3782737262601de693db0dca (diff) | |
download | NPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.tar.gz NPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.tar.bz2 NPEhero-f49a73c6af7445bb4ae92fcab87e13abba527048.zip |
add ui scrollbars, game over menu, new font
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .vscode/launch.json | 8 | ||||
-rw-r--r-- | src/fallTest/Hbox.java | 5 | ||||
-rw-r--r-- | src/gui/DebugMenu.java | 41 | ||||
-rw-r--r-- | src/gui/Driver.java | 29 | ||||
-rw-r--r-- | src/gui/GameOver.java | 113 | ||||
-rw-r--r-- | src/gui/Leaderboard.java | 3 | ||||
-rw-r--r-- | src/gui/LevelDetails.java | 73 | ||||
-rw-r--r-- | src/gui/LevelSelector.java | 20 | ||||
-rw-r--r-- | src/gui/LevelSurround.java | 20 | ||||
-rw-r--r-- | src/gui/MainMenu.java | 9 | ||||
-rw-r--r-- | src/gui/Settings.java | 16 | ||||
-rw-r--r-- | src/gui/SettingsController.java | 54 | ||||
-rw-r--r-- | src/gui/style.css | 135 | ||||
-rw-r--r-- | src/main/LeaderboardController.java | 5 | ||||
-rw-r--r-- | src/main/LevelController.java | 2 | ||||
-rw-r--r-- | src/main/SettingsController.java | 61 | ||||
-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
@@ -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 |