diff options
-rw-r--r-- | .classpath | 38 | ||||
-rw-r--r-- | .vscode/settings.json | 3 | ||||
-rw-r--r-- | src/gui/Driver.java | 33 | ||||
-rw-r--r-- | src/gui/Leaderboard.java | 2 | ||||
-rw-r--r-- | src/gui/LevelDetails.java | 37 | ||||
-rw-r--r-- | src/gui/LevelSelector.java | 13 | ||||
-rw-r--r-- | src/gui/LevelSurround.java | 9 | ||||
-rw-r--r-- | src/gui/MainMenu.java | 6 | ||||
-rw-r--r-- | src/gui/Settings.java | 2 | ||||
-rw-r--r-- | src/gui/style.css | 56 | ||||
-rw-r--r-- | src/main/Level.java | 20 | ||||
-rw-r--r-- | src/main/LevelController.java | 39 | ||||
-rw-r--r-- | src/test/Level.java (renamed from src/gui/Level.java) | 3 |
13 files changed, 179 insertions, 82 deletions
@@ -1,19 +1,19 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
- <attributes>
- <attribute name="module" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/>
- <classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/>
- <classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/> + <classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/> + <classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.vscode/settings.json b/.vscode/settings.json index d84211f..4321e74 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,8 @@ "java.project.sourcePaths": ["src"], "java.project.outputPath": "bin", "java.project.referencedLibraries": [ - "lib/linux/**/*.jar" + "lib/linux/**/*.jar", + "lib/**/*.jar" ], "java.debug.settings.onBuildFailureProceed": true }
\ No newline at end of file diff --git a/src/gui/Driver.java b/src/gui/Driver.java index 56bc36a..b93dbce 100644 --- a/src/gui/Driver.java +++ b/src/gui/Driver.java @@ -13,12 +13,12 @@ import javafx.scene.layout.BackgroundRepeat; import javafx.scene.layout.BackgroundSize; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import main.LevelController; public class Driver extends Application { static Stage primaryStage; - static HashMap<String,Pane> menus = new HashMap<String,Pane>(); static Pane primaryPane = new Pane(); public static void main(String[] args) @@ -29,43 +29,22 @@ public class Driver extends Application @Override public void start(Stage newPrimaryStage) { + new LevelController(); primaryStage = newPrimaryStage; - menus.put("MainMenu", new MainMenu()); - menus.put("LevelSelector", new LevelSelector()); - menus.put("Settings", new Settings()); - menus.put("Leaderboard", new Leaderboard()); - for (Pane value : menus.values()) { - System.out.println(primaryStage.heightProperty()); - value.prefHeightProperty().bind(primaryPane.heightProperty()); - value.prefWidthProperty().bind(primaryPane.widthProperty()); - } - - Scene primaryScene = new Scene(primaryPane, 800, 600); primaryScene.getStylesheets().add("gui/style.css"); primaryStage.setScene(primaryScene); primaryStage.setTitle("NPE Hero"); - setMenu("MainMenu"); + setMenu(new MainMenu()); setBackground("assets/water.png"); primaryStage.show(); } - - public static void setMenu(String name) - { - if (! primaryPane.getChildren().isEmpty()) - { - primaryPane.getChildren().remove(0); - } - primaryPane.getChildren().add(menus.get(name)); - primaryPane.requestFocus(); - } - - public static void setCustomMenu(Pane pane) + public static void setMenu(Pane pane) { if (! primaryPane.getChildren().isEmpty()) { @@ -77,6 +56,10 @@ public class Driver extends Application primaryPane.requestFocus(); } + public static Pane getMenu(){ + return (Pane) primaryPane.getChildren().get(0); + } + public static void setBackground(String url) { primaryPane.setBackground(new Background( diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java index b91fa7c..2b12d25 100644 --- a/src/gui/Leaderboard.java +++ b/src/gui/Leaderboard.java @@ -22,7 +22,7 @@ public class Leaderboard extends Pane Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox centerBox = new VBox(); centerBox.setAlignment(Pos.CENTER); diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java index 93a43cd..427ede0 100644 --- a/src/gui/LevelDetails.java +++ b/src/gui/LevelDetails.java @@ -4,18 +4,22 @@ import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.ListView; +import javafx.scene.control.ToggleButton; +import javafx.scene.control.ToggleGroup; import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.scene.text.TextAlignment; +import main.Level; public class LevelDetails extends VBox { - public LevelDetails(ListView<String> list) + public LevelDetails(Level level) { VBox details = new VBox(); details.prefWidthProperty().bind(super.prefWidthProperty()); @@ -26,9 +30,10 @@ public class LevelDetails extends VBox details.setPadding(new Insets(10)); Button play = new Button(); + play.setDisable(true); play.setText("Play"); - if (list.getSelectionModel().getSelectedItem() == null) + if (level == null) { Text desc = new Text(); desc.setText("Select a level from the left pane"); @@ -37,30 +42,44 @@ public class LevelDetails extends VBox desc.setTextAlignment(TextAlignment.CENTER); details.setAlignment(Pos.CENTER); details.getChildren().addAll(desc); - play.setDisable(true); } else { Text title = new Text(); - title.setText("Test level 1"); + title.setText(level.title); title.setFill(Color.WHITE); title.setFont(new Font(50)); title.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10)); Text desc = new Text(); - desc.setText("long description with lots of words. what we write does not actually need to be long i just wan t make sure it can word wrap"); + desc.setText(level.desc); desc.setFill(Color.WHITE); desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10)); ImageView previewView = new ImageView(); - Image preview = new Image("assets/pico.png"); + Image preview = level.preview; previewView.setImage(preview); - //previewView.setFitHeight(100); previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5)); previewView.setPreserveRatio(true); - details.getChildren().addAll(title,desc,previewView); - play.setOnAction(e -> Driver.setCustomMenu(new LevelSurround())); + + HBox diffBox = new HBox(); + diffBox.setPadding(new Insets(30,0,0,0)); + HBox diffSelector = new HBox(); + diffSelector.setAlignment(Pos.CENTER); + ToggleGroup diffToggleGroup = new ToggleGroup(); + for (String diff : level.diffList) + { + ToggleButton temp = new ToggleButton(); + temp.setText(diff); + diffToggleGroup.getToggles().add(temp); + diffSelector.getChildren().add(temp); + } + play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); + + diffBox.getChildren().add(diffSelector); + details.getChildren().addAll(title,desc,previewView, diffBox); + play.setOnAction(e -> Driver.setMenu(new LevelSurround(level, "easy", Driver.getMenu()))); } VBox rightBox = new VBox(); diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java index 9ae6033..38dc15f 100644 --- a/src/gui/LevelSelector.java +++ b/src/gui/LevelSelector.java @@ -13,20 +13,21 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; +import main.LevelController; +import main.Level; public class LevelSelector extends Pane { public LevelSelector() { - ListView<String> levels = new ListView<String>(); - ObservableList<String> levelList= FXCollections.observableArrayList ("Test Level 1", "Test Level 2", "Test Level 3", "Test Level 4"); - levels.setItems(levelList); + ListView<Level> levels = new ListView<Level>(); + levels.setItems(main.LevelController.levelList); levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25)); levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox leftBox = new VBox(); leftBox.setAlignment(Pos.CENTER_LEFT); @@ -48,9 +49,9 @@ public class LevelSelector extends Pane super.getChildren().add(rootBox); } - private void addDetails(Pane rightBox, ListView<String> levels) + private void addDetails(Pane rightBox, ListView<Level> levels) { - VBox details = new LevelDetails(levels); + VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem()); if (! rightBox.getChildren().isEmpty()) { rightBox.getChildren().remove(0); diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java index 204ec3a..3371c3e 100644 --- a/src/gui/LevelSurround.java +++ b/src/gui/LevelSurround.java @@ -12,15 +12,16 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; +import main.Level; public class LevelSurround extends Pane { //will have param (Level l) - public LevelSurround() + public LevelSurround(Level level, String diff2, Pane prev) { Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("LevelSelector")); + exit.setOnAction(e -> Driver.setMenu(prev)); Button pause = new Button(); pause.setText("Pause"); @@ -31,12 +32,12 @@ public class LevelSurround extends Pane buttonBox.setSpacing(10); Text title = new Text(); - title.setText("Test level 1"); + title.setText(level.title); title.setFill(Color.WHITE); title.setFont(new Font(50)); Text diff = new Text(); - diff.setText("Easy"); + diff.setText(diff2); diff.setFill(Color.WHITE); VBox titleTextBox = new VBox(); diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java index 39fb2be..f3cd75d 100644 --- a/src/gui/MainMenu.java +++ b/src/gui/MainMenu.java @@ -27,15 +27,15 @@ public class MainMenu extends Pane Button play = new Button(); play.setText("Play"); - play.setOnAction(e -> Driver.setMenu("LevelSelector")); + play.setOnAction(e -> Driver.setMenu(new LevelSelector())); Button settings = new Button(); settings.setText("Settings"); - settings.setOnAction(e -> Driver.setMenu("Settings")); + settings.setOnAction(e -> Driver.setMenu(new Settings())); Button leaderboard = new Button(); leaderboard.setText("Leaderboard"); - leaderboard.setOnAction(e -> Driver.setMenu("Leaderboard")); + leaderboard.setOnAction(e -> Driver.setMenu(new Leaderboard())); VBox buttonBox = new VBox(); buttonBox.getChildren().addAll(play, settings, leaderboard); diff --git a/src/gui/Settings.java b/src/gui/Settings.java index d3c2632..c89953f 100644 --- a/src/gui/Settings.java +++ b/src/gui/Settings.java @@ -35,7 +35,7 @@ public class Settings extends Pane Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox options = new VBox(); options.setSpacing(10); diff --git a/src/gui/style.css b/src/gui/style.css index 1e2dfcc..957025f 100644 --- a/src/gui/style.css +++ b/src/gui/style.css @@ -3,7 +3,10 @@ Button { -fx-background-color: rgba(0, 0, 0, 0.5); -fx-text-fill: white; - -fx-padding: .5em; + /* -fx-padding: .5em; */ + -fx-border-color: transparent; + -fx-border-width: 3; + -fx-border-radius: 5; -fx-font-size: 25; -fx-background-radius: 5; } @@ -13,12 +16,15 @@ Button:hover { } Button:focused { - -fx-background-color: rgb(255, 255, 255); - -fx-text-fill: rgb(0, 0, 0); + /* -fx-background-color: rgb(255, 255, 255); */ + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); + /* -fx-text-fill: rgb(0, 0, 0); */ } Button:pressed { -fx-background-color: rgb(231, 231, 231); + -fx-border-color: transparent; -fx-text-fill: rgb(0, 0, 0); } @@ -27,12 +33,18 @@ Button:pressed { ListView { -fx-background-color: rgba(0, 0, 0, 0.5); -fx-background-radius: 5; + -fx-padding: 5; + -fx-effect: none; } .list-cell { -fx-padding: .5em; -fx-background-color: transparent; + -fx-background-radius: 5; -fx-text-fill: rgb(255, 255, 255); + -fx-border-width: 3; + -fx-border-radius: 5; + -fx-border-color: transparent; } .list-cell:hover { @@ -40,6 +52,11 @@ ListView { } +.list-cell:focused { + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); +} + .list-cell:selected { -fx-background-color: rgb(255, 255, 255); -fx-text-fill: rgb(0, 0, 0); @@ -96,4 +113,37 @@ Slider:focused .thumb{ -fx-border-color: red; -fx-text-fill: white; -fx-border-width: 20; +} + +/* toggle button */ + +ToggleButton { + -fx-background-color: rgba(0, 0, 0, 0.5); + -fx-text-fill: white; + -fx-border-color: transparent; + -fx-border-width: 3; + -fx-border-radius: 5; + -fx-font-size: 25; + -fx-background-radius: 5; +} + +ToggleButton:hover { + -fx-background-color: rgb(50, 50, 50, 0.5); +} + +ToggleButton:focused { + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); +} + +ToggleButton:selected { + -fx-background-color: rgb(255, 255, 255); + -fx-text-fill: rgb(0, 0, 0); + +} + +ToggleButton:pressed { + -fx-background-color: rgb(231, 231, 231); + -fx-border-color: transparent; + -fx-text-fill: rgb(0, 0, 0); }
\ No newline at end of file diff --git a/src/main/Level.java b/src/main/Level.java index 52047fd..71560d2 100644 --- a/src/main/Level.java +++ b/src/main/Level.java @@ -8,18 +8,22 @@ import javafx.scene.paint.Color; public class Level { - private Color[] colors; - private Image background; - private Image preview; - private String text; - private String desc; - //private ArrayList<String>(); + public Image preview; + public String title; + public String aritst; + public String desc; + public ArrayList<String> diffList = new ArrayList<String>(); + + public Image background; + public Color[] colors; - //google "varargs" to see how this works public void setColors(Color... newColors) { colors = newColors; } - //INCOMPLETE + public String toString() + { + return title+" - "+aritst; + } } diff --git a/src/main/LevelController.java b/src/main/LevelController.java index daf7ae3..6dec953 100644 --- a/src/main/LevelController.java +++ b/src/main/LevelController.java @@ -1 +1,38 @@ -//coming soon
\ No newline at end of file +package main; + +import java.util.ArrayList; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.paint.Color; + +public class LevelController +{ + public static ObservableList<Level> levelList = FXCollections.observableArrayList(); + + public LevelController() + { + Level testLevel = new Level(); + testLevel.title = "test level class"; + testLevel.desc = "this level is being used to test the LevelController class"; + testLevel.aritst = "testArtist"; + testLevel.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE); + testLevel.diffList.add("Hello"); + testLevel.diffList.add("Easy"); + testLevel.diffList.add("Med"); + levelList.add(testLevel); + + Level testLevel2 = new Level(); + testLevel2.title = "another one"; + testLevel2.desc = "it can say something else too"; + testLevel2.aritst = "testArtist2"; + testLevel2.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE); + testLevel2.diffList.add("Hard"); + testLevel2.diffList.add("Easy"); + testLevel2.diffList.add("Med"); + testLevel2.diffList.add("insane+++"); + levelList.add(testLevel2); + + } + +}
\ No newline at end of file diff --git a/src/gui/Level.java b/src/test/Level.java index ecb741d..6647b6d 100644 --- a/src/gui/Level.java +++ b/src/test/Level.java @@ -1,5 +1,6 @@ -package gui; +package test; +import gui.Block; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; |