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 | 
